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) )
或者
if ( !(this instanceof ___) )
或者
if ( !(this instanceof User) )
我在这个论坛上读到 arguments.callee 已贬值,我们必须使用 apply 或 call 方法。
如何使用 call 或 apply 方法检查该对象的实例?