3
我已经在供应商代码的对象构造看到这个测试:对象的构造:测试,如果这是}这种对象
function MyObject() {
if (!(this instanceof MyObject)) return new MyObject;
...
}
我的第一个倾向是,这个测试是用来防止绑定到另一个this
值时调用构造函数。但是,我想在这里检查是否有其他的东西丢失。有人可以解释这个测试的确切意图吗?
很好的答案!并且100%同意这应该抛出一个例外,而不是抱着粗心大意的开发者的手。 – srquinn
应该补充的是,这主要在nodejs模块中看到,其中模块的'export'的值可以是多种不同的东西,而不仅仅是一个对象构造函数。有了这个说法,文档和抛出异常仍然是优先于“修复”开发人员的代码。我认为隐含的构建会导致更严重的代码滥用,而不是正在试图阻止的测试。 – srquinn