Javascript &引用;获得;不起作用
JavaScript控制台在第12行显示“意外标识符”时出错Javascript &引用;获得;不起作用,javascript,get,getter,Javascript,Get,Getter,JavaScript控制台在第12行显示“意外标识符”时出错 get旨在在对象中调用,而不是在函数构造函数中调用。如果要将getFirst声明为User上的函数,则可以使用以下方法: var Jake = new User(); Jake.firstname = "Jake"; document.write(Jake.getFirst); 然后您还需要调用getFirst作为函数: function User() { this.firstname = null; this.getF
get
旨在在对象中调用,而不是在函数构造函数中调用。如果要将getFirst
声明为User
上的函数,则可以使用以下方法:
var Jake = new User();
Jake.firstname = "Jake";
document.write(Jake.getFirst);
然后您还需要调用getFirst
作为函数:
function User() {
this.firstname = null;
this.getFirst = function() {
return this.firstname;
}
}
我认为问题在于,您使用的是函数
get
,而不是中概述的对象文本
这不是定义getter所使用的语法。您可以在对象文本中使用它,如下所示:
var User = {
firstName: 'Darren',
get getFirst() { return this.firstName; }
}
alert(User.getFirst);
…但这不是您的get
所在的位置
要在get
所在的位置定义它,可以使用defineProperty
:
var foo = {
get bar() {
return 42;
}
};
foo.bar; // 42
注意:我称它为first
,而不是getFirst
,因为它是一个访问器函数,看起来像是直接属性访问,因此传统上不以动词形式命名:
function User() {
this.firstname = null;
Object.defineProperty(this, "first", {
get: function() {
return this.firstname;
}
});
}
如果要创建名为getFirst
的函数,只需去掉get
关键字:
var u = new User();
u.firstname = "Paul";
u.first; // "Paul"
我从未在javascript中见过get关键字。你用ActionScript编程了吗?这是一个getter,你可以在这里了解更多:你确定这些getter是在你试图使用它们的环境中实现的吗?@osnapizkindle:JavaScript自2009年以来就有一个可用的
get
关键字。对不起,我从未使用过它。顺便说一句,既然我们谈论的是“Java”脚本,那么Java编码风格可能更好,但这个问题是关于如何使它作为一个getter而不是一个函数工作。“getter”只是一个返回值的函数。在对象中。defineProperty(
…)
您可以编写get
而不是value
,它将按预期工作。尽管如此,它仍然会使用此代码返回null
,因为firstname
实际上没有被设置为“Paul”
@Xufox:LOL,这一点很好。感谢您提供的值
/获取
捕获。
function User() {
this.firstname = null;
Object.defineProperty(this, "first", {
get: function() {
return this.firstname;
}
});
}
var u = new User();
u.firstname = "Paul";
u.first; // "Paul"
this.getFirst = function() {
return firstname;
};
// ...
var u = new User();
u.firstname = "Paul";
u.getFirst(); // "Paul"