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

JavaScript method and property call difference confusion

本文关键字:调用 方法 属性 JavaScript      更新时间:2023-09-26

我的JavaScript代码

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

所以当我使用persona.getId = 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();

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

通过使用persona.getId = getId;,您只是创建了对getId()的引用。你没有调用getId方法。

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

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

通过调用getId()函数,返回的结果将被赋值给persona.getId

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

当然它不会调用。对于调用任何方法,您需要在最后添加();

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

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

要调用getId,你需要这样做:

getId(); 
persona.getId();