Javascript JS new.target vs.instanceof
因此,我对节点6.x中添加的Javascript JS new.target vs.instanceof,javascript,new-operator,instanceof,Javascript,New Operator,Instanceof,因此,我对节点6.x中添加的new.targetboolean做了一些阅读。下面是上提供的new.target的一个简单示例 但是这读起来很像我现在使用下面的代码 var Foo = function (options) { if (!(this instanceof Foo)) { return new Foo(options); } // do stuff here } 我的问题是:new.target对方法实例有什么好处吗?我并不认为这两个问题更清楚new.targ
new.target
boolean做了一些阅读。下面是上提供的new.target
的一个简单示例
但是这读起来很像我现在使用下面的代码
var Foo = function (options) {
if (!(this instanceof Foo)) {
return new Foo(options);
}
// do stuff here
}
我的问题是:new.target
对方法实例有什么好处吗?我并不认为这两个问题更清楚new.target
可能是一个更容易阅读的scosche,但这只是因为它少了一组参数()
谁能提供我所缺少的见解?谢谢 使用此Foo实例您将检查此实例是否为Foo,但无法确保已使用new调用该实例。 我可以做这样的事
var foo = new Foo("Test");
var notAFoo = Foo.call(foo, "AnotherWord");
而且很好用。使用new.target可以避免此问题。
我建议您阅读这本书您可以在任何实例上调用构造函数,但您可以在不使用
new
new的情况下调用它。target
不是布尔值!请参阅以获取更多解释。感谢您的澄清,Bergie甚至更好:foo.constructor(“另一个词”)
@Bergi您确定您的这种方法有效吗?对象不能像这样访问构造函数,但只有原型可以。我的意思是,如果‘foo’是原型,那么只有你提到的代码才会work@Sumer是的,它会起作用,foo
对象继承自原型,因此您可以访问它的.constructor
属性。
var foo = new Foo("Test");
var notAFoo = Foo.call(foo, "AnotherWord");