我真的看不到为什么该
constructor属性就是JS中的属性。我偶尔会发现自己使用它来获取IE
<9中对象的原型(例如Event对象)。但是,我确实认为它可以允许某些ppl模仿经典的OO编程构造:
function Foo(){ this.name = 'Foo';}function Bar(){ this.name = 'Bar';}function Foobar(){};Foo.prototype = new Foobar;Foo.prototype.constructor = Foo;Bar.prototype = new Foobar;Bar.prototype.constructor = Bar;var foo = new Foo();var bar = new Bar();//so far the set-upfunction pseudoOverload(obj){ if (!(obj instanceof Foobar)) { throw new Error 'I only take subclasses of Foobar'; } if (obj.constructor.name === 'Foo') { return new obj.constructor;//reference to constructor is quite handy } //do stuff with Bar instance}因此AFAIK,构造函数属性的 “优点” 是:
- 从实例轻松实例化新对象
- 能够 组 你的对象为某一类的子类,但仍然能够检查哪些特定类型的子类,你处理的。
- 如您所说:保持整洁。


![真正使用的“ constructor”属性是什么?[重复] 真正使用的“ constructor”属性是什么?[重复]](http://www.mshxw.com/aiimages/31/408012.png)
