gpt4 book ai didi

javascript - Javascript 中对象如何引用自身?

转载 作者:行者123 更新时间:2023-12-02 20:32:52 24 4
gpt4 key购买 nike

我正在尝试 JavaScript 中的继承,并编写了这两个函数:

Object.prototype.inherits=function(obj){this.prototype=new obj;}
Object.prototype.pass=function(obj){obj.prototype=new this;}

这段代码运行得很好:

Dog.inherits(Animal);

但是以下失败:

Animal.pass(Dog);

据我了解,我的传递函数不起作用,因为“this”不是对对象实例本身的引用?如果是这样,我如何从对象内部引用该对象?

提前致谢!

最佳答案

嗯,实际上两者做的完全一样:

Dog.prototype = new Animal;

方法内的 this 值将引用调用引用的基对象,在以下情况下:

Dog.inherits(Animal);

this 值将引用 Dog 构造函数,obj 参数将是 Animal功能。

当您调用时:

Animal.pass(Dog);

this 值将引用 Animal 函数,最后执行与 inherits 方法完全相同的操作,但另一个绕过去。

我建议您不要扩展Object.prototype对象,因为它可能会给您带来很多问题,例如这两个属性将在任何for-in 循环,例如:

for (var prop in {}) { // <-- an empty object!
alert(prop); // will alert 'inherits' and 'pass'
}

所有对象都继承自Object.prototype,并且您似乎打算仅在Function对象上使用这些方法,扩展Function.prototype会更安全对象,或将方法实现为带有两个参数的函数。

关于javascript - Javascript 中对象如何引用自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3795019/

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