我试图从子对象调用父属性
var parentObj = {
attr1:1,
attr2:2,
childObj:{
method1:function(){
return this.attr1 * this.attr2;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
Emm*_*ett 28
尝试parentObj直接引用:
var parentObj = {
attr1: 1,
attr2: 2,
childObj: {
method1: function () {
return parentObj.attr1 * parentObj.attr2;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Ray*_*nos 27
这可以通过封闭的力量来完成!
var Construct = function() {
var self = this;
this.attr1 = 1;
this.attr2 = 2;
this.childObj = {
method1: function () {
return self.attr1 * self.attr2
}
}
}
var obj = new Construct();
Run Code Online (Sandbox Code Playgroud)
Mik*_*Mik 19
var parentObj = {
attr1:1,
attr2:2,
childObj:{
method1:function(){
return this.parent.attr1 * this.parent.attr2;
}
},
init:function(){
this.childObj.parent = this;
delete this.init;
return this;
}
}.init();
Run Code Online (Sandbox Code Playgroud)
这是另一种不引用父对象名称的方法.
var parentObj = {
attr1: 1,
attr2: 2,
get childObj() {
var self = this;
return {
method1: function () {
return self.attr1 * self.attr2;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
可以访问:
parentObj.childObj.method1(); // returns 2
Run Code Online (Sandbox Code Playgroud)
引用父对象我的名字存在问题,因为如果您重命名它会破坏应用程序。这是一种更好的方法,在我广泛使用的方法中,您将父代作为参数传递给子代init方法:
var App = {
init: function(){
this.gallery.init(this);
},
somevar : 'Some Var'
}
App.gallery = {
init: function(parObj){
this.parent = parObj;
console.log( this.parent.somevar );
}
}
App.init();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23830 次 |
| 最近记录: |