鑑於這樣的對象:如何在子函數中引用父對象?
var MyObj = {
bar: 10,
foo: function() {
alert(MyObj.bar);
}
}
我怎樣才能從一般這樣MyObj.foo
引用MyObj
,如果我改變var MyObj
到var MyObj2
我不需要修改foo
功能?
鑑於這樣的對象:如何在子函數中引用父對象?
var MyObj = {
bar: 10,
foo: function() {
alert(MyObj.bar);
}
}
我怎樣才能從一般這樣MyObj.foo
引用MyObj
,如果我改變var MyObj
到var MyObj2
我不需要修改foo
功能?
如果你想治療MyObj
喜歡的一類,你可以不喜歡什麼lumio建議,或者你可以不喜歡
function MyObj(){
this.bar = 10;
this.foo = function(){
return this.bar;
}
}
var a = new MyObj();
var b = new MyObj();
b.bar = 5;
console.log(a.foo(), b.foo()) // 10 5
相反,如果你只是想引用對象的bar
值,那麼你可以用alert(this.bar);
替換alert(MyObj.bar);
謝謝,這看起來像我所需要的。我並不是真的想要做真正的「類」邏輯 - 只是想要或多或少地命名一些輔助函數。如果我有嵌套結構('MyObj.foo.bar.baz.func1();'),我想我可以在函數的頂部執行'var that = this;'然後''將始終無論我在哪裏,都可以參考父母 – user126715
班會在這裏幫助你很多。在ES5類可以像這樣創建:
function MyObj() {
this.bar = 10;
}
MyObj.prototype.foo = function() {
console.log(this.bar);
}
var objInstance = new MyObj;
objInstance.foo();
var objInstance2 = new MyObj;
objInstance2.bar = 20;
objInstance2.foo();
ES6允許一個更好的符號:
class MyObj {
constructor() {
this.bar = 10;
}
foo() {
console.log(this.bar);
}
}
var objInstance = new MyObj;
objInstance.foo();
var objInstance2 = new MyObj;
objInstance2.bar = 20;
objInstance2.foo();
用巴貝爾將其轉換到ES5。
使用'this'而不是'MyObj'。 –
取決於執行上下文。 –
[在javascript中訪問父對象]的可能重複(https://stackoverflow.com/questions/1789892/access-parent-object-in-javascript) – colecmc