2012-09-27 13 views
6

JavaScriptでは、すべての関数のプロトタイプオブジェクトには、関数(EcmaScript §13.2)を指す列挙できないプロパティconstructorがあります。本当に使われている `constructor`プロパティは何ですか?

SubClass.prototype = Object.create(SuperClass.prototype, { 
    constructor: {value:SubClass, writable:true, configurable:true} 
}); 

しかし、(私を含め)我々は唯一のことを行うのです。それは、継承のための機能のprototypeプロパティを上書きするときしかし、我々are encouraged to adjust it、任意のネイティブ機能(例えばinstanceofチェックのみプロトタイプチェーン)で使用されていません明快さときれいさのために? constructor propertyに依存している実際の使用例はありますか?

+0

私の理解コンストラクタプロパティは、特定のオブジェクトが作成されたか、どの機能コンストラクタによって構築されたものかを確認するために使用されます。 – Apurv

+0

related:[Javascriptのコンストラクタプロパティには良いユースケースがありますか?](http://stackoverflow.com/questions/8073867/is-there-a-good-use-case-for-the-constructor-property -in-javascript)でも、答えは役に立たないが、 – Bergi

+0

も参照してください。[なぜプロトタイプのコンストラクタを設定する必要がありますか?](0120-17753-03) – Bergi

答えて

2

constructorプロパティは、それはJSには何かということですなぜ私は本当に見ることができません。私の知る限り

ので

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-up 
function 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 
} 
:私は時折9.しかし、私はそれはいくつかの皆さんは、古典的なオブジェクト指向プログラミング構造を模倣することを可能にするためにあると思うんIE <に(Eventオブジェクトのような)オブジェクトのプロトタイプを得るためにそれを使用して自分自身を見つけます、 「の利点は、」constructorプロパティのは次のとおりです。

  • 簡単にインスタンスから新しいオブジェクトをインスタンス化グループあなたのオブジェクトにできることCERTAのサブクラスであるとしてあなたが扱っているサブクラスの特定のタイプを確認することができます。
  • あなたが言うように:整頓されています。
0

私の理解コンストラクタプロパティは、特定のオブジェクトが作成されたか、どの機能コンストラクタによって構築されたものかを確認するために使用されます。

これは同じのための偉大な例です。 http://www.klauskomenda.com/code/javascript-inheritance-by-example/

+0

この記事では、 'constructor'プロパティはまったくありません。 – Bergi

+0

私は何を求めているのか理解するためにhttp://joost.zeekat.nl/constructors-considered-mildly-confusing.htmlを読んでみてください。私はプロトタイプを意味します。 – Apurv

関連する問題