gpt4 book ai didi

javascript - 从原型(prototype)继承属性

转载 作者:行者123 更新时间:2023-11-27 23:40:36 25 4
gpt4 key购买 nike

function classA(){}; 

classA.prototype.age =25;

var obj = new classA();

console.log(obj.age) //returns 25

现在,当我这样做时:

classA.prototype = {};

为什么obj.age仍然返回25

最佳答案

发生这种情况是因为您将 classA.prototype 指向一个新对象,但您没有更改 obj.prototype 的对象指着。

发生的事情是:

classA.prototype ------> A
// create object with new classA()
// now its prototype also points to A
obj.prototype ------> A // points to the same prototype

现在您重新设计classA的原型(prototype)

classA.prototype ------> B

但是obj的原型(prototype)仍然指向A(它从未改变)

obj.prototype    ------> A

因此,您所做的就是在 obj 的原型(prototype)引用已经建立后更改 classA 的原型(prototype)引用。

如果您想让obj看到原型(prototype)上的更改,那么更改它引用的对象(上例中的A)而不是引用本身:

示例代码:

function classA(){}; 

classA.prototype.age =25;

var obj = new classA();

console.log(obj.age) // 25

// change the object itself, not the reference
delete classA.prototype.age;

console.log(obj.age); // undefined

关于javascript - 从原型(prototype)继承属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33698201/

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