2016-06-28 3 views
1

私は、オブジェクトAを作成したいと思いますので、私はこのように書く:"A.fn.A.init {}"とはどういう意味ですか?

A = function() { 
} 
A.prototype = { 
    init: function() { 
     console.log(this); 
    } 
} 

new A.prototype.init()の結果はA.init {}です。
は、私はこのようなA.prototypeのエイリアスを作成する場合:

A = function() { 
} 
A.as = A.prototype = { 
    init: function() { 
     console.log(this); 
    } 
} 

結果はA.as.A.init {}の代わりA.init {}であることが判明しました。
なぜですか? thisはどのように機能しますか?

+0

期待される結果は? – guest271314

+0

"*新しいA.prototype.init()の結果*"それをしないでください。もしそれがあなたが望むならば 'new A'インスタンスを作成し、' init'メソッドをドロップしてください。 – Bergi

答えて

1

"A.fn.A.init {}"とはjavascriptで何を意味していますか?

実際には何も意味しません。コンソールAPIも生成される出力も標準化されていません。ブラウザは、オブジェクトの「名前」または「クラス」を決定するための実装固有のヒューリスティックを適用します(おそらくconstructorプロパティを見ていますが、それ以上のことは明らかです)。

どちらの場合でも、thisは、A.prototype.init.prototypeから継承する新しいオブジェクトを参照します。コンソールがあなたに表示する名前とは無関係です。

関連する問題