Javascript语法,使用functionName与functionName()

时间:2014-01-20 05:55:40

标签: javascript object methods

考虑到这一点:         

  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在线学习的互动测验,互动测验告诉我这些不正确,我不知道为什么。

1 个答案:

答案 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
相关问题