所以我遇到了一个问题。我有一个名为myTree
的对象。而且该对象具有属性。其中一个属性包含这样的方法:
prep: function (variable) {
/* some code */
}
在该方法中有一个数组myarray
,我想知道,是否可以访问该数组的内容,如果是,我将如何做到这一点。
我在jsFiddle上做了一个演示,在JavaScript窗口的末尾你可以看到我正在警告包含prep
的对象myarray
。
答案 0 :(得分:4)
JavaScript变量是功能范围的。无法从外部范围访问属于内部范围的变量(即“function”)。
如果您想要这种访问,则必须将相应的变量作为外部范围的一部分。
var myTree = function() {
var myarray = [];
this.prep = function (variable) {
myarray.push(variable);
};
}
在您的场景中,您有嵌套对象,它非常相似:
var myTree = {
myarray: [],
prep: function (variable) {
this.myarray.push(variable);
}
}
唯一的区别是使用this
关键字。
当您通过 object literal 语法(obj = {prop: value}
)而不是通过构造函数(function Obj(value) { this.prop = value; }; obj = new Obj(value);
)定义对象时,所有已定义的属性将是“public”默认值。
当您在该对象上调用函数时,this
将指向相应的对象实例。
仍然无法从外部访问“内部范围”变量。没有办法解决这个问题。
一般来说:您可以访问您构造的对象的属性。您永远不能访问函数局部变量(嵌套函数内部除外)。