Javascript对象澄清

时间:2018-12-18 15:13:11

标签: javascript object

是一个初学者,正在学习JavaScript,并且正在玩Objects,并且想知道为什么这段代码会引发错误。

var a =  {
    greeting: "Hello",
    greet: this.greeting +  "John"
}
console.log(a.greet);

3 个答案:

答案 0 :(得分:1)

虽然已经弄清楚了为什么为什么您的代码抛出错误,但我想解释一下如何使用它。

Javascript在普通函数和构造函数之间没有区别,对一个类来说,它只是对Origination {}的调用,并且前面带有任何函数。

因此,对象可以引用自身的方法是使用函数体作为其定义:

new function

速记,因为您将不会创建多个const AClass = function () { this.greeting = 'Hello' this.greet = this.greeting + ' John' } const a = new AClass() console.log(a.greet) 对象(至少在您的示例中如此):

AClass

答案 1 :(得分:1)

由于评论中所述的问题,您无法使用。

我猜你想要这样的东西:

null_marker

或者这样:

var a =  {
    greeting: "Hello",
    greet: function() {return this.greeting +  " John"}
}
console.log(a.greet());

第一个函数使var a = (() => { var greeting = "Hello" return { greeting, greet: greeting + ' John' } })() console.log(a.greet);成为一个函数,这意味着它将对greet中的后续更改做出响应。第二个基于greeting值创建一个对象。但是,您必须使用局部变量作为参考,因为构建时的greeting不是新对象,而是某些外部作用域,可能类似于this

答案 2 :(得分:-1)

您在这里对这个问题的解释是:How Do I reference objects proerty at creation

要执行所需的操作,可以使用对象获取器。

 var b = {
        greeting: "Hello",
        get greet() { //this a getter that accesses greeting
            return this.greeting + " John";
        }
    }
    console.log(b.greet);