javascript:new instance.constructor()相当于new Class()?

给出以下代码

function Class(){}
Class.prototype=...
var instance1=new Class();

以下2行是等价的吗?第1行是否有任何不便(性能,兼容性……)?

var instance2=new instance1.constructor();
var instance2=new Class();

编辑:

我在使用继承时对构造函数方法特别感兴趣:从基类中获取最终的类构造函数(如果需要,我可以给出一个示例)

最佳答案 它们在默认情况下是等效的,但不能保证保持为真.

定义Class时,会自动定义Class.prototype.constructor.但是如果你要编写一些改变原型的代码:

Class.prototype = {};

然后Class.prototype.constructor将回退到Object.prototype.constructor.然后它将对应于新的Object(),而不是新的Class().

回顾一下:

function Class() {}
var instance1 = new Class();

Class === instance1.constructor; // true

Class.prototype = {};
var instance2 = new Class();

instance1.constructor === instance2.constructor // false
Object === instance2.constructor // true
点赞