我是使用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

10-06 11:35