[英]How to access outer scope from inner function?
如何从内部函数c1访问container.a?
var container = {
a : 'blah',
b : function(){
console.log(this.a); // prints 'blah'
},
c : {
// how to access container.a from here?
c1: function(){
// and here?
}
}
}
只要参考容器就可以了
var container = {
a : 'blah',
b : function(){
console.log(this.a); // prints 'blah'
},
c : {
c1: function(){
console.log(container.a)
}
}
}
按名字:
var container = {
a : 'blah',
b : function(){
console.log(this.a); // prints 'blah'
},
c : {
// how to access container.a from here?
c1: function(){
console.log(container.a);
// and here?
}
}
}
你可以参考保存对象的引用外部变量,但不一定稳定。 如果更改“容器”的值,它将不起作用。 为了防止这种情况,您可以将对象定义封装在匿名函数中:
var container = function() {
var obj = {
a : 'blah',
b : function(){
console.log(this.a); // prints 'blah'
},
c : {
c1: function(){
console.log(obj.a)
}
}
};
return obj;
}();
这看起来非常相似,但通过这样做,你可以保证“obj”的值不会改变(除非对象中的某些其他函数改变它,这将是一件奇怪的事情)。 现在,无论最初分配给“容器”的对象发生什么,该.c.c1()
函数都将继续工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.