访问对象属性中的变量

Accessing variable inside object property

本文关键字:变量 属性 对象 访问      更新时间:2023-09-26

所以我遇到了一个问题。我有一个对象叫做 myTree .并且该对象具有属性。其中一个属性包含如下方法:

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

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

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

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

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将指向相应的对象实例。

从外部访问"内部作用域"变量仍然是不可能的。这是没有办法的。

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