2016-03-19 11 views
6

は私を許し期待して何をしていないが、私はこれを行うことによって、と思った:JavaScriptは - instanceofは私が私が間違っている場合

function MyObject() 
{ 
    return { 
     key: 'value', 
     hello: function() { console.log('world'); } 
    }; 
} 

var obj = new MyObject(); 

私はMyObjectに型の新しいインスタンスを作成します。私がしなければ

しかし、これは:

obj instanceof MyObject 

それは、を返します。これは、私がこれが返すと考えたので、私をうなずける。

私はここで間違っていますか?

これは、これをテストするfiddleです。

私はJavaScriptの基本が新しいと思っていましたが、おそらくそうではありませんでした。しかし、私はsourcesが私の知見と矛盾することを発見しました。

答えて

9

コンストラクタ関数からオブジェクトを明示的に返すと(ここで行うように)、コンストラクタのインスタンスの代わりにそのオブジェクトを取得します。あなたは、コンストラクタのインスタンスを取得したい場合は

、あなたはこれを行うだろう:

function MyObject() 
{ 
    this.key = 'value'; 
    this.hello = function() { console.log('world'); }; 
} 

(一般的には、あなたがそれらの複製を生成する代わりに、プロトタイプにメソッドを置きたいと思います、が、新しいインスタンスを作成するたびに)。

関連する問題