因此,我的目标是设置卡的特殊属性。以某种方式,我的前三个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
中的原始值,但是当您在某个对象上对其进行更改时,它会得到自己的副本。不再指向原型,例如:假设现在您有一个例外卡,您希望该卡的
special
为true
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/