Javascript 从成员函数访问函数成员变量
Foo是一个具有名为list的公共成员的函数。它有一个名为setList的公共成员函数。我希望能够从setList编辑列表。我可以这样做吗?我尝试了一些方法,但我甚至无法从setList内部访问列表Javascript 从成员函数访问函数成员变量,javascript,closures,this,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); // U
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,所以如果我用错误的名称调用了某些东西,请原谅。假设您正在使用
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
您还可以设置一个原型,该原型将产生相同的结果。我可以解释为什么有时您可能想要使用原型,但此链接提供了有关该主题的良好信息
这将记录传递到x.setList的数组,x.setList是['hello','hi'],显示列表已更新。您如何调用此代码?另外,为什么要使用命名闭包作为构造函数?
this
的值取决于函数的调用方式。如果不知道您如何调用setList
,我们就不可能正确地帮助您。假设您在其他方面都做对了,此.list
应该可以工作。也许你可以看看。
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);