mad*_*eye 5 javascript scope object
所以我遇到了一个问题。我有这个对象叫做myTree. 该对象具有属性。其中一个属性包含这样的方法:
prep: function (variable) {
/* some code */
}
Run Code Online (Sandbox Code Playgroud)
在该方法中有一个数组myarray,我想知道是否可以访问该数组的内容,如果可以,我将如何执行此操作。
我做了对的jsfiddle演示,并在JavaScript窗口结束时,你可以看到,我提醒对象prep中myarray包含。
JavaScript 变量是函数作用域的。不可能从外部作用域访问属于内部作用域(即“函数”)的变量。
如果您想要这种访问,您必须使外部作用域的相应变量部分。
var myTree = function() {
var myarray = [];
this.prep = function (variable) {
myarray.push(variable);
};
}
Run Code Online (Sandbox Code Playgroud)
在您的场景中,您有嵌套对象,它非常相似:
var myTree = {
myarray: [],
prep: function (variable) {
this.myarray.push(variable);
}
}
Run Code Online (Sandbox Code Playgroud)
唯一的区别是this关键字的使用。
当您通过对象字面量语法 ( obj = {prop: value}) 而不是构造函数 ( function Obj(value) { this.prop = value; }; obj = new Obj(value);) 定义对象时,默认情况下所有定义的属性都将是“公共的”。
当您对该对象调用函数时,this将指向相应的对象实例。
从外部访问“内部范围”变量仍然是不可能的。没有办法解决这个问题。
一般而言:您可以访问您构造的对象的属性。你永远不能访问函数局部变量(除了从嵌套函数内部)。