给出以下代码
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