有一个老技巧(that I learned on SO)来捕获构造函数作为函数,即忘记new
关键字。以下,或类似的东西,它位于顶部的每个构造函数中。
if (!(this instanceof arguments.callee)) {
throw Error("Constructor called as a function");
}
当您需要"use strict";
时有哪些替代方案?
是否可以保留其通用性质?或者我们是否必须使用构造函数的名称来代替arguments.callee
?
答案 0 :(得分:5)
arguments.callee
本身,而使用命名函数表达式。虽然我不一定同意这一举动,但事情已经取得了进展。因此,在严格模式下用函数名替换arguments.callee
是唯一的方法,也是非严格模式下的首选方法。