在同一对象内添加两个字符串属性(Uncaught ReferenceError)

时间:2015-12-21 16:07:04

标签: javascript jquery

假设我有这个:

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,但没有运气。

3 个答案:

答案 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)

这是因为在您同时调用helloworld来设置all属性时,该对象尚不存在。如果您需要此行为,请将all定义为函数,以便在定义对象后执行:

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:0)

您也可以分两步完成:

var test = {
    hello: "one",
    world: "two"
}

test.all = test.hello + test.world;