因此,我的目标是设置卡的特殊属性。以某种方式,我的前三个console.log将显示false(默认),但是在代码之后它将显示true。我尝试了几种方法(在card中描述一个方法将此this.special设置为true,然后再调用该方法。没有作用)。也只是改变card.special没有用。谢谢,

    function card(name,value,special) {
 this.name = name,
 this.value = value,
 this.special = special
}
var a9 = new card("nine",9,false);
var a10 = new card("Ten",9,false);
var aal = new card("lower",9,false);

console.log(a9.special);
console.log(a10.special);
console.log(aal.special);
//code comes here
console.log(a9.special);
console.log(a10.special);
console.log(aal.special);

最佳答案

使用原型存储special

function card(name,value,special) {
  this.name = name;
  this.value = value;
}

card.prototype.special= false;

var a9 = new card("nine",9);
var a10 = new card("Ten",9);
var aal = new card("lower",9);

console.log(a9.special);  //false
console.log(a10.special); //false
console.log(aal.special); //false


应当指出,只要不修改对象上的special,它就会一直指向prototype中的原始值,但是当您在某个对象上对其进行更改时,它会得到自己的副本。不再指向原型,例如:

假设现在您有一个例外卡,您希望该卡的specialtrue

aal.special=true;
console.log(aal.special);//true


它不会影响其他人,而是会获得自己的独立副本

console.log(a9.special); //false
console.log(a10.special); //false

card.prototype.special= true; // make all true

console.log(a9.special); //true
console.log(a10.special); //true

关于javascript - 如何更改将覆盖对象值的原型(prototype)值?可能吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40906054/

10-09 20:13