是一个初学者,正在学习JavaScript,并且正在玩Objects,并且想知道为什么这段代码会引发错误。
var a = {
greeting: "Hello",
greet: this.greeting + "John"
}
console.log(a.greet);
答案 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);