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