function User(first, last){
if ( !(this instanceof arguments.callee) )
return new User(first, last);
this.name = first + " " + last;
}
var name = "Resig";
var user = User("John", name);
assert( user, "This was defined correctly, even if it was by mistake." );
assert( name == "Resig", "The right name was maintained." );
要检查实例是否使用new运算符,我们在构造函数中执行这些操作。
if ( !(this instanceof arguments.callee) )
OR
if ( !(this instanceof ___) )
OR
if ( !(this instanceof User) )
我在这个论坛上读过arguments.callee折旧,我们必须使用apply或call方法。
如何使用call或apply方法检查该Object的实例?
答案 0 :(得分:1)
我认为您展示的最后一个选项是查看构造函数是否使用new调用的正确方法。但是,我个人并不喜欢这个过程。它鼓励开发人员在没有新操作符的情况下调用构造函数。