这个instanceof arguments.callee的严格模式替代

时间:2011-06-25 19:53:25

标签: javascript constructor arguments strict-mode

有一个老技巧(that I learned on SO)来捕获构造函数作为函数,即忘记new关键字。以下,或类似的东西,它位于顶部的每个构造函数中。

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

当您需要"use strict";时有哪些替代方案?

是否可以保留其通用性质?或者我们是否必须使用构造函数的名称来代替arguments.callee

1 个答案:

答案 0 :(得分:5)

不推荐使用

arguments.callee本身,而使用命名函数表达式。虽然我不一定同意这一举动,但事情已经取得了进展。因此,在严格模式下用函数名替换arguments.callee是唯一的方法,也是非严格模式下的首选方法。