我是使用JavaScript的新手,但是我面临构造函数的问题,我的问题是我无法用新函数覆盖旧函数的属性!
下面是我的代码:
function myFun() {
this.anotherFun = function() {
return true;
}
}
var myVar = new myFun();
console.log(myVar.anotherFun()); // returns 'true' as expected;
myFun.prototype.anotherFun = function() {
return false;
}
console.log(myVar.anotherFun()); // is returns 'true' why not 'false'?
最佳答案
因为当同一属性在原型链中多次出现时,使用最接近的属性才有意义。
您的实例具有自己的属性,因此您将无法通过添加继承的实例来覆盖它。
您可能不想将myFun
添加为自己的属性
function myFun(){}
myFun.prototype.anotherFun = function(){return true};
var myVar = new myFun();
console.log(myVar.anotherFun()); // true
myFun.prototype.anotherFun = function(){return false};
console.log(myVar.anotherFun()); // false