如何在JavaScript中"get"一个成员变量?
How do I "get" a member variable in JavaScript?
function User() {
this.firstname = null;
get getFirst() {
return this.firstname;
}
}
JavaScript console gives me an error saying "Unexpected Identifier" on line 12
var Jake = new User();
Jake.firstname = "Jake";
document.write(Jake.getFirst);
get
旨在在对象内调用,而不是函数构造函数。如果您想将 getFirst
声明为 User
上的函数,那么您可以采用以下一种方法:
function User() {
this.firstname = null;
this.getFirst = function() {
return this.firstname;
}
}
那么你还需要调用 getFirst
作为函数:
var Jake = new User();
Jake.firstname = "Jake";
document.write(Jake.getFirst());
我认为问题在于您将 get
与函数一起使用,而不是 documentation.
中概述的对象文字
var User = {
firstName: 'Darren',
get getFirst() { return this.firstName; }
}
alert(User.getFirst);
这不是您用来定义 getter 的语法。您可以在对象 文字 中使用它,如下所示:
var foo = {
get bar() {
return 42;
}
};
foo.bar; // 42
...但这不是你的 get
所在的位置。
要在 get
所在的位置定义它,您需要使用 defineProperty
:
function User() {
this.firstname = null;
Object.defineProperty(this, "first", {
get: function() {
return this.firstname;
}
});
}
注意我称它为 first
,而不是 getFirst
,因为它是一个访问函数,看起来像直接 属性 访问,因此传统上不在动词形式:
var u = new User();
u.firstname = "Paul";
u.first; // "Paul"
如果您想创建一个名为 getFirst
的函数,只需删除 get
关键字:
this.getFirst = function() {
return firstname;
};
// ...
var u = new User();
u.firstname = "Paul";
u.getFirst(); // "Paul"
function User() {
this.firstname = null;
get getFirst() {
return this.firstname;
}
}
JavaScript console gives me an error saying "Unexpected Identifier" on line 12
var Jake = new User();
Jake.firstname = "Jake";
document.write(Jake.getFirst);
get
旨在在对象内调用,而不是函数构造函数。如果您想将 getFirst
声明为 User
上的函数,那么您可以采用以下一种方法:
function User() {
this.firstname = null;
this.getFirst = function() {
return this.firstname;
}
}
那么你还需要调用 getFirst
作为函数:
var Jake = new User();
Jake.firstname = "Jake";
document.write(Jake.getFirst());
我认为问题在于您将 get
与函数一起使用,而不是 documentation.
var User = {
firstName: 'Darren',
get getFirst() { return this.firstName; }
}
alert(User.getFirst);
这不是您用来定义 getter 的语法。您可以在对象 文字 中使用它,如下所示:
var foo = {
get bar() {
return 42;
}
};
foo.bar; // 42
...但这不是你的 get
所在的位置。
要在 get
所在的位置定义它,您需要使用 defineProperty
:
function User() {
this.firstname = null;
Object.defineProperty(this, "first", {
get: function() {
return this.firstname;
}
});
}
注意我称它为 first
,而不是 getFirst
,因为它是一个访问函数,看起来像直接 属性 访问,因此传统上不在动词形式:
var u = new User();
u.firstname = "Paul";
u.first; // "Paul"
如果您想创建一个名为 getFirst
的函数,只需删除 get
关键字:
this.getFirst = function() {
return firstname;
};
// ...
var u = new User();
u.firstname = "Paul";
u.getFirst(); // "Paul"