关于javascript:访问对象属性中的变量

Accessing variable inside object property

所以我遇到了一个问题。 我有这个名为myTree的对象。 而且该对象具有属性。 其中一个属性包含这样的方法:

1
2
3
prep: function (variable) {
    /* some code */
}

在该方法中有一个数组myarray,我想知道,是否可以访问该数组的内容,如果是,我将如何做到这一点。

我在jsFiddle上做了一个演示,在JavaScript窗口的末尾你可以看到我正在警告包含myarray的对象prep

http://jsfiddle.net/Wp7Xh/1/


JavaScript变量是功能范围的。 不可能从外部范围访问属于内部范围的变量(即"函数")。

如果您想要这种访问,则必须使外部范围的相应变量部分。

1
2
3
4
5
6
7
var myTree = function() {
  var myarray = [];

  this.prep = function (variable) {
    myarray.push(variable);
  };
}

在您的场景中,您有嵌套对象,它非常相似:

1
2
3
4
5
6
var myTree = {
  myarray: [],
  prep: function (variable) {
    this.myarray.push(variable);
  }
}

唯一的区别是使用this关键字。

通过对象文字语法(obj = {prop: value})而不是通过构造函数(function Obj(value) { this.prop = value; }; obj = new Obj(value);)定义对象时,默认情况下所有已定义的属性都将为"public"。

当您在该对象上调用函数时,this将指向相应的对象实例。

从外部访问"内部范围"变量仍然是不可能的。 没有办法解决这个问题。

一般来说:您可以访问您构造的对象的属性。 您永远不能访问函数局部变量(嵌套函数内部除外)。