gpt4 book ai didi

javascript - 从子 Javascript 访问父方法

转载 作者:行者123 更新时间:2023-11-29 18:03:29 25 4
gpt4 key购买 nike

如何从以下代码中的 bar() 函数内部访问 baz()?

var obj = {
baz : function(){ alert("Hi!"); },
foo: {
bar: function(){
baz();
}
}
}

最佳答案

JavaScript 没有某种内置的父引用,因为在我们称之为多对一关系的情况下,一个对象可以被多个“父”引用。

正如其他人所说,在这种简化的情况下,只需调用 obj.baz() 即可。

在更复杂的情况下,您将不得不手动构建对象并跟踪 parent 身份:

// Create the root object
var rootObject = {baz: function() {console.log('rootBaz');}}

// And the basic child
var childObject = {foo: function() {console.log('childFoo');}}

// Configure the parent
childObject.parent = rootObject;

// Add our call.
childObject.baz = function() {this.parent.baz()};

// Invoke and test
childObject.baz();

可以稍微简化一下:

var rootObject = {
baz: function() {console.log('rootBaz');}
};

var childObject = {
foo: function() {console.log('childFoo');},
baz: function() {this.parent.baz()}
};

childObject.parent = rootObject;
childObject.baz();

根据 Sujet 的评论更新

此外,如果您需要确保 baz 具有正确的 this 值,您可以使用 callapply .

  baz: function() {this.parent.baz.call(this.parent)}

如果您的代码不需要this,那么我建议根据我的原始答案直接调用函数。

关于javascript - 从子 Javascript 访问父方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33198050/

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