function User() {
this.firstname = null;
get getFirst() {
return this.firstname;
}
}
JavaScript控制台给我一个错误说"意外标识符"在第12行
var Jake = new User();
Jake.firstname = "Jake";
document.write(Jake.getFirst);
答案 0 :(得分:9)
这不是您用来定义getter的语法。您可以在对象 literal 中使用它,如下所示:
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"
答案 1 :(得分:2)
我认为问题在于您使用的是get
函数,而不是documentation中概述的对象文字。
var User = {
firstName: 'Darren',
get getFirst() { return this.firstName; }
}
alert(User.getFirst);
答案 2 :(得分:0)
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());