微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 对象构造:测试这是否是instanceOf Object

我在供应商代码的对象构造函数中看到了这个测试:

function MyObject() {
  if (!(this instanceof MyObject)) return new MyObject;
  ...
}

我的第一个倾向是这个测试用于在调用构造函数时阻止绑定到另一个这个值.但是,我想在这里检查一下,我还缺少一些东西.有人可以解释一下这个测试的确切意图吗?

解决方法

此测试是为了确保MyObject始终用作构造函数,即:

var instance = new MyObject();

永不

var instance = MyObject();

这会导致代码的不良行为.

如果有人不小心使用了var instance = MyObject(); form然后这个函数内部将是一个全局对象(Window),在这种情况下,instanceof check将强制进行适当的构造函数调用.

然而,有些人认为这种模式有害,因为它修复了开发人员的错误.我个人会在这种情况下抛出一个例外,而不是让粗心的开发人员像一切都好.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐