JavaScript方法和属性调用差异混淆

时间:2015-08-28 06:19:01

标签: javascript

我的JavaScript代码

var persona = {};
var _id = 3;

var getId = function () {
    console.log("getId called")
    return _id;
}
persona.getId = getId;

因此,当我使用getId调用persona.getId = getId;方法时,它未被调用。并且控制台无法打印

  

getId被叫

更新

搜索后,了解它们之间的区别。 所以用这个更新我的问题。

  

persona.getId = getId;& persona.getId = getId();

这两句话做了不同的工作。

  

persona.getId = getId();

以上语句将getId()函数返回的值存储到persona.getId属性中。

  

persona.getId = getId;

上述语句将getId()函数的引用存储到persona.getId属性。由于persona.getId中存储的值是函数引用,因此persona.getId也是一个函数。它可以使用以下代码调用 -

persona.getId();

2 个答案:

答案 0 :(得分:1)

  

当我使用persona.getId = getId;调用getId方法时,它没有被调用

使用persona.getId = getId;,您只需创建对getId()的引用。您没有调用getId方法。

要调用该方法,您需要在结尾函数名称中添加()

persona.getId = getId();
//                   ^^

通过调用函数getId(),返回的结果将被合并到persona.getId

<强>演示

&#13;
&#13;
var persona = {};
var _id = 3;

var getId = function() {
  document.write("getId called")
  return _id;
};
persona.getId = getId();

console.log(persona);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

当然它不会打电话。要调用任何方法,最后需要添加();

var persona = {};
var _id = 3;

var getId = function () {
    console.log("getId called")
    return _id;
}
persona.getId = getId;

这里你只是创建了getId函数的引用。

要调用getId,您需要执行以下操作:

getId(); 
persona.getId();