関数の prototype プロパティがその関数から作ったインスタンスのメソッド設定するところ
関数定義したら最初から prototype プロパティはある
javascript
1function A(){}
2A.prototype.testMethod = function(){console.log(1)}
3
4var a = new A()
5a.testMethod() // 1
__proto__ はインスタンスが作られた関数の prototype への参照
メソッド呼び出しは __proto__ プロパティに入ってるオブジェクトのプロパティを見てる
javascript
1function A(){}
2A.prototype.testMethod = function(){console.log(1)}
3
4var a = new A()
5a.__proto__ === A.prototype // true
6a.testMethod === A.prototype.testMethod // true
__proto__ たどれば継承がわかる
javascript
1var span = document.createElement("span")
2span.__proto__.constructor.name // HTMLSpanElement
3span.__proto__.__proto__.constructor.name // HTMLElement
4span.__proto__.__proto__.__proto__.constructor.name // Element
5span.__proto__.__proto__.__proto__.__proto__.constructor.name // Node
6span.__proto__.__proto__.__proto__.__proto__.__proto__.constructor.name // EventTarget
7span.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__.constructor.name // Object
[[prototype]] は JavaScript のコードじゃなくて説明用に使われる言葉だったはず
もっと詳しく→
http://stackoverflow.com/questions/17174786/what-is-the-significance-of-the-double-brackets-for-the-prototype-property-i
退会済みユーザー
2016/08/08 06:05