如何使用call或apply方法检查该Object的实例

时间:2012-12-30 01:49:17

标签: javascript

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的实例?

1 个答案:

答案 0 :(得分:1)

我认为您展示的最后一个选项是查看构造函数是否使用new调用的正确方法。但是,我个人并不喜欢这个过程。它鼓励开发人员在没有新操作符的情况下调用构造函数。