gpt4 book ai didi

javascript - 在 JavaScript 中调用函数对象

转载 作者:行者123 更新时间:2023-11-28 11:28:44 27 4
gpt4 key购买 nike

我有一个关于 JavaScript 的小问题。

这是一个声明:

function answerToLifeUniverseAndEverything() {
return 42;
}

var myLife = answerToLifeUniverseAndEverything();

如果我这样做console.log(myLife) ,它将打印 42 ,因为我只是调用同一个函数实例,结果是 42作为答案。 (JavaScript 的基本规则是只传递对象的引用,而不传递对象本身。)

现在,另一方面,如果我这样做:

var myLife = new answerToLifeUniverseAndEverything();

那么我无法调用该函数;相反,myLife变成只是一个物体?我知道这是同一函数对象的新副本而不是引用,但为什么我无法调用该方法?

您能澄清一下我在这里缺少的基本原理吗?

最佳答案

通过在对 answerToLifeUniverseAndEverything() 的调用前加上 new 前缀,您可以告诉 JavaScript 以 constructor function 的形式调用该函数。 ,(内部)类似于:

var newInstance = {};
var obj = answerToLifeUniverseAndEverything.call(newInstance); // returs 42
if (typeof obj === 'object') {
return obj
} else {
return newInstance;
}

JavaScript 继续初始化构造函数内的 this 变量,使其指向 answerToLifeUniverseAndEverything 的新实例。除非您自己返回不同的对象,否则无论您是否喜欢,都会返回这个新实例。

关于javascript - 在 JavaScript 中调用函数对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1920163/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com