假设我有这个:
var test = {
hello: "one",
world: "two",
all: hello + world
}
$('h1').text("Test > all: " + test.all);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1></h1>
<h2>Test</h2>
为什么在上面明确定义时会出现以下错误?
未捕获的ReferenceError:未定义hello
我尝试添加this
,但没有运气。
答案 0 :(得分:3)
您的错误是因为您尝试从未定义的变量设置“all”。使用getter来尝试:
var test = {
hello: "one",
world: "two",
get all() { return this.hello + this.world; }
}
$('h1').text("Test > all: " + test.all);
答案 1 :(得分:2)
这是因为在您同时调用hello
和world
来设置all
属性时,该对象尚不存在。如果您需要此行为,请将all
定义为函数,以便在定义对象后执行:
var test = {
hello: "one",
world: "two",
all: function() {
return this.hello + this.world
}
}
$('h1').text("Test > all: " + test.all());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1></h1>
<h2>Test</h2>
&#13;
答案 2 :(得分:0)
您也可以分两步完成:
var test = {
hello: "one",
world: "two"
}
test.all = test.hello + test.world;