Arguments.callee替换为检测错误的构造函数使用

时间:2014-07-19 00:08:07

标签: javascript constructor arguments prototype

我正在阅读John Resig的优秀书籍" Javascript Ninja的秘密"(http://www.manning.com/resig/

在其中,他有一个非常好的方法来捕获被称为函数的构造函数 -

function User(first, last)
    if((!this instanceof arguments.callee)) {
        return new User(first, last);
    }
}

现在我知道可以手动为每个函数添加类的名称,但是如果我想要聪明并且扩展我的所有构造函数来自" BaseConstructor"通过设置一个布尔值,如何在没有arguments.callee的情况下实现这个目标?

像(未经测试的)

function BaseConstructor() {}
BaseConstructor.prototype.calledCorrectly = (function () { 
    return !this.instanceof arguments.callee;
})();

0 个答案:

没有答案