gpt4 book ai didi

javascript - 从子对象函数访问原型(prototype)

转载 作者:行者123 更新时间:2023-11-30 10:25:43 24 4
gpt4 key购买 nike

假设你有

function Thing () {
this.val = 1;
}

Thing.prototype.some = function () {
console.log('thing');
};

Thing.prototype.foo = {
bar: function () {
console.log(root.val);
}
};

您如何能够像在 Thing 实例中一样获得对 this 的引用,同时仍然坚持原型(prototype)模型?

最佳答案

使用该设置,唯一的方法是显式地将对象(“Thing”实例)作为参数传递,或者使用 .call().apply( )

如果你实例化一个“Thing”:

var thing = new Thing();

然后您可以作为 thing.foo.bar 访问“bar”函数。从该引用中调用:

thing.foo.bar();

“bar”内的 this 的值将是原型(prototype)上的“foo”对象。但是,您可以使用 .call():

thing.foo.bar.call(thing);

然后调用“bar”的this确实是实例化的“Thing”对象。

请务必记住,在 JavaScript 中,将对象属性设置为函数不会在对象和函数之间创建任何类型的特殊关系。重要的是当引用表达式中的属性值时发现的关系。它始终是动态的,虽然遵循原型(prototype)链的机制有些令人眼花缭乱,但确定 this 的规则非常简单。

关于javascript - 从子对象函数访问原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19639367/

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