在下面的代码中,我将Person.sayHello方法更改为' Bye'。调试器显示该方法已更改,但构造函数方法仍在使用。为什么呢?
function Person(){
this.sayHello = function(){
console.log("Hello");
}
}
Person.sayHello = function(){
console.log("Bye");
}
console.log(Person.sayHello);
// function (){console.log("Bye");}
var p = new Person();
p.sayHello();
//Hello
答案 0 :(得分:1)
构造函数方法是每个对象实例的个体。因此,你不能覆盖它们"全球"对于所有未来的实例,只能在实例本身上更改它们:
function Person() {
this.sayHello = function () {
console.log("Hello");
}
}
var p = new Person();
p.sayHello = function () {
console.log("Bye");
}
p.sayHello();
此外,Person.sayHello
应为Person.prototype.sayHello
。