从成员函数访问函数成员变量

时间:2014-10-11 00:16:48

标签: javascript closures this

Foo是一个名为list的公共成员的函数。它有一个名为setList的公共成员函数。我希望能够从setList编辑列表。我能这样做吗?我尝试了一些事情,但我甚至无法从setList中访问列表。

var Foo = function Foo() {

    this.list = ["a", "b", "c"];

    this.setList = function(data) {
        // Attempt 1
        console.log(list); // Uncaught ReferenceError: list is not defined
        // Attempt 2 
        console.log(this.list); // undefined
        // Attempt 3
        console.log(Foo.list); // undefined
    }
}

我还在骗JS,所以如果我用错误的名字打电话,请原谅我。

2 个答案:

答案 0 :(得分:1)

假设您正在使用Foo创建实例:

function Foo()
{
    this.list = ["a", "b", "c"];

    this.setList = function(data) {
        this.list = data;
    }
}

var x = new Foo();
console.log(x.list); // a,b,c
x.setList([]);
console.log(x.list); // empty array

答案 1 :(得分:0)

您还可以设置一个原型,它将产生相同的结果。我可以解释为什么有时你可能想要使用原型,但这个链接提供了关于该主题的良好信息http://thecodeship.com/web-development/methods-within-constructor-vs-prototype-in-javascript/

function Foo(){
  this.list = [1,2,3];
}

Foo.prototype = {
  setList: function(data){
    this.list = data;
  }
};

var x = new Foo();
x.setList(['hello', 'hi']);
console.log(x.list);

这将记录传递到x.setList的数组,该数组是['hello','hi'],显示该列表已更新。