在JavaScript中,在构造函数之外更改构造函数方法?
在下面的代码中,我将Person.sayHello方法改为说“再见”。调试器显示该方法已更改,但构造函数方法仍在使用中。为什么?在JavaScript中,在构造函数之外更改构造函数方法?,javascript,Javascript,在下面的代码中,我将Person.sayHello方法改为说“再见”。调试器显示该方法已更改,但构造函数方法仍在使用中。为什么? function Person(){ this.sayHello = function(){ console.log("Hello"); } } Person.sayHello = function(){ console.log("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
构造函数方法对于每个对象实例都是独立的。因此,您不能再次为所有未来实例“全局”覆盖它们,只能在实例本身上更改它们:
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
Person.prototype.sayHello不会重写构造函数sayHello方法。但是,我得到了答案。Thanks@BrianBishop这就是我想说的,是的:)哇,我不仅仅问了一个重复的问题,我甚至使用了相同的Person对象和相同的sayHello()方法。这太奇怪了!!