严格模式下替代this instanceof arguments.callee的方法

12

有一个老技巧(我在stack overflow上学来的)可以用来捕获将构造函数作为函数调用的情况,也就是忘记使用new关键字。以下代码或类似的代码应该放在每个构造函数的顶部。

if (!(this instanceof arguments.callee)) {
    throw Error("Constructor called as a function");
}

当你需要使用"use strict";时,有哪些替代方案?

它的普适性能否得以保留?或者我们必须使用构造函数的名称来代替arguments.callee

1个回答

5

arguments.callee已经被弃用,建议使用命名函数表达式。虽然我不一定同意这种做法,但它是事情的发展方向。因此,在严格模式下,用函数名替换arguments.callee是唯一的方法,也是非严格模式下首选的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接