javascript: 从结构中的函数范围访问结构中的父对象
javascript: access to parent object in structure from the scope of the function in structure
告诉我如何从函数的作用域(在结构中)访问其父元素(在结构中)?
例如:
var mystruct = {
element1: 10,
element2: 'test',
element3: {
sub1: 'data',
sub2: function(){
return this;
}
},
};
var res = mystruct.element3.sub2();
结果:
res = {sub1: 'data', sub2: f}
但是函数 mystruct.element3.sub2 是如何访问元素 mystruct.element1 的呢?
例如:
sub2: function(){
return this.parent.element1;
}
结果:
res = 10
方法:
sub2: function(){
return mystruct.element1.sub1;
}
不适合,因为在函数范围内我不知道mystruct
如果我没理解错的话,你是想访问主对象。一种方法是将 'element3' 定义为一个函数,这样您就可以创建一个闭包来访问 'mystruct'。类似于:
var mystruct = {
element1: 10,
element2: 'test',
element3: function () {
var parent = this;
return {
sub1: 'data',
sub2: function(){
return parent.element1;
}
}
},
};
你可以使用哪个:
mystruct.element3().sub2()
给出:
10
您可以使用立即调用函数表达式 (IIFE) 创建 element3,这样您就可以将父对象保存在一个变量中,然后相应地使用它。
var mystruct = {
element1: 10,
element2: 'test',
element3: (function () {
// save the reference you want to access later
var parent = this;
// create and return the object that you want to assign to 'element3'
return {
sub1: 'data',
sub2: function() {
// use the saved reference
return parent.element1;
}
}
})() // NOTE: immediately invoke the function to return the correct object
};
之后您可以随心所欲地使用它:
mystruct.element3.sub2(); // will return 10
或者你可以只使用它的变量名:
sub2: function () {
return mystruct.element1;
}
告诉我如何从函数的作用域(在结构中)访问其父元素(在结构中)?
例如:
var mystruct = {
element1: 10,
element2: 'test',
element3: {
sub1: 'data',
sub2: function(){
return this;
}
},
};
var res = mystruct.element3.sub2();
结果:
res = {sub1: 'data', sub2: f}
但是函数 mystruct.element3.sub2 是如何访问元素 mystruct.element1 的呢?
例如:
sub2: function(){
return this.parent.element1;
}
结果:
res = 10
方法:
sub2: function(){
return mystruct.element1.sub1;
}
不适合,因为在函数范围内我不知道mystruct
如果我没理解错的话,你是想访问主对象。一种方法是将 'element3' 定义为一个函数,这样您就可以创建一个闭包来访问 'mystruct'。类似于:
var mystruct = {
element1: 10,
element2: 'test',
element3: function () {
var parent = this;
return {
sub1: 'data',
sub2: function(){
return parent.element1;
}
}
},
};
你可以使用哪个:
mystruct.element3().sub2()
给出:
10
您可以使用立即调用函数表达式 (IIFE) 创建 element3,这样您就可以将父对象保存在一个变量中,然后相应地使用它。
var mystruct = {
element1: 10,
element2: 'test',
element3: (function () {
// save the reference you want to access later
var parent = this;
// create and return the object that you want to assign to 'element3'
return {
sub1: 'data',
sub2: function() {
// use the saved reference
return parent.element1;
}
}
})() // NOTE: immediately invoke the function to return the correct object
};
之后您可以随心所欲地使用它:
mystruct.element3.sub2(); // will return 10
或者你可以只使用它的变量名:
sub2: function () {
return mystruct.element1;
}