gpt4 book ai didi

javascript:如何覆盖某个类的所有实例的方法?

转载 作者:行者123 更新时间:2023-11-30 13:28:26 27 4
gpt4 key购买 nike

function Person(){
this.scream = function(){
alert('NO NO NO!!!!');
};
}

var steve = new Person();
steve.scream() // NO NO NO!!!!
Person.prototype.scream = function(){
alert('YES YES YES!!!!');
}
steve.scream() // still NO NO NO!!!!

有没有办法在不明确引用史蒂夫的情况下覆盖“尖叫”?想一想您有多个 Person 实例的情况。

最佳答案

没有,

有了 Person 声明,每次您创建它的新“实例”时,“构造函数”都会运行,您将创建一个全新的 scream 函数(闭包)你没有任何引用,除了新创建的对象,steve.scream 就是。

作为替代方案,您可以这样做:

function Person(){}

Person.prototype.scream = function(){
alert('NO NO NO!!!!');
}

var steve = new Person();
steve.scream() // NO NO NO!!!!
Person.prototype.scream = function(){
alert('YES YES YES!!!!');
}
steve.scream() // this time is YES YES YES!!!!

在这种情况下,最初的scream“方法”仅在一个地方可用,在原型(prototype)上,您可以为所有“实例”覆盖它。

关于javascript:如何覆盖某个类的所有实例的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7673430/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com