考虑到这一点:
var genericGreet = function() {
return "Hello, my name is " + this.name;
}
var andrew = {
name: "Andrew",
greet: genericGreet
}
var ryan = {
name: "Ryan",
greet: genericGreet
}
</script>
为什么说greet: genericGreet()
或greet: genericGreet();
是错误的。以上是来自treehouse.com的一系列javascript在线学习的互动测验,互动测验告诉我这些不正确,我不知道为什么。
答案 0 :(得分:1)
greet: genericGreet
也会让greet
指向genericGreet
指向的对象。因此,greet
现在是同一函数的别名。但是当你说
greet: genericGreet()
您正在使greet
指向genericGreet
函数的返回值。如果您打算稍后致电greet
,那么您应该使用
greet: genericGreet
只。通常,人们使用Prototypal模式来实现这个
function PersonGreeter(personName) {
this.name = personName;
}
PersonGreeter.prototype.greet = function() {
return "Hello, my name is " + this.name;
};
var andrew = new PersonGreeter("Andrew");
console.log(andrew.greet());
var ryan = new PersonGreeter("Ryan");
console.log(ryan.greet());
<强>输出强>
Hello, my name is Andrew
Hello, my name is Ryan