javascript - IIFE 引发错误

标签 javascript

我是 JavaScript 编程新手。我编写了一个 IIFE,它将帮助我提高理解。我的目的是定义一个 $ 函数,在调用时会将其自身称为构造函数。运行代码时,它会生成错误“递归过多”。我不知道问题出在哪里。

(function() {
//check the global host object
var root = this;

var inside = "inside";

var $ = function () {
    return new $(); //this line generates an error 'Too much recursion.'
}

$.check = function(obj) {
    console.log(inside);
}

//add the $ to global object
root.$ = $;
}).call(this);

var ins = $();

console.log(ins);

最佳答案

var $ = function () {
    return new $(); //this line generates an error 'Too much recursion.'
}

此函数重复调用自身,这就是您看到 Too much recursion. 错误的原因。您无法区分常规函数调用和 new 调用。

My intention is to define a $ function that when called will call itself as a constructor.

最简单的方法是显式检查:

var $ = function $() {
    if(!(this instanceof $)) return new $();
    // ... from this point on, behave as if called via new 
}

关于javascript - IIFE 引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18945573/

相关文章:

javascript - Grails 和 css/javascript 库

javascript - 按空格分割句子混淆了我的索引

javascript - 使用 Coffeescript 计算对象中的键数

javascript - 配置 Visual Studio 2008 以编辑旧版 JScript ASP 文件

javascript - 异步剪贴板 API - 未触发 clipboardchange 事件

javascript - 如何在悬停时显示每个元素的值

javascript - Fabric js 用键盘移动图像

javascript - D3js强制布局 - 节点之间的渐变线

javascript - 为什么我不能动态绘制表格?我怎样才能画出 table ?

javascript - Basic Angular - 如何将 json http 响应加载到另一个 json 对象中