如何在以下代碼中從bar()函數內部訪問baz()?訪問父子方法Javascript
var obj = {
baz : function(){ alert("Hi!"); },
foo: {
bar: function(){
baz();
}
}
}
如何在以下代碼中從bar()函數內部訪問baz()?訪問父子方法Javascript
var obj = {
baz : function(){ alert("Hi!"); },
foo: {
bar: function(){
baz();
}
}
}
JavaScript沒有有一點f內置的父引用,因爲一個對象可以被我們稱之爲多對一關係的多個「父母」引用。
正如其他人所說,在這種簡化的情況下,只需撥打obj.baz()
即可使用。
在更復雜的情況下,你必須手動建立的目的和軌道父母:
// 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
對於有正確的值您可以使用call
或apply
。
baz: function() {this.parent.baz.call(this.parent)}
如果你的代碼不需要this
那麼我會建議每個我原來的答覆直線函數調用。
也許解釋*電話*和*應用*功能。 http://stackoverflow.com/questions/17017115/javascript-call-function –
謝謝@HorsSujet。完成。 –
只需使用對象引用:
var obj = {
baz : function(){ alert("Hi!"); },
foo: {
bar: function(){
obj.baz();
}
}
}
你需要通過object.property符號引用。
在你的榜樣,你會得到通過巴茲:
obj.baz()
一些重要的資源爲這個:
obj.baz將在這種簡化的情況下工作 –
這不是OOP意義上的「父」。 – Bergi