メソッドがなければprototypeをさかのぼる
ハタさんのブログ(復刻版) : javascriptを初めて学ぶ人についてのおさらい。その2を見ながら学習
var Echo = { hello: function (){ return 'hello'; } }; var Hoge = function (){}; Hoge.prototype = Echo; var hoge = new Hoge; alert(hoge.hello()); // hello Echo.world = function (){ return 'world'; }; alert(hoge.world()); // world
これはEchoがオブジェクトで(newしていなくて)、hogeがメソッド「world」を探そうとした時に
自分にないからHogeにさかのぼり、さらにHogeにないからそのprototypeのEchoまでさかのぼるから見つかるのかな?
var Echo = function (){}; Echo.prototype = { hello: function (){ return 'hello2'; } }; var Hoge = function (){}; Hoge.prototype = new Echo; var hoge = new Hoge; alert(hoge.hello()); // hello2 Echo.world = function (){ return 'worl2'; }; alert(hoge.world); // undefined Echo.prototype.world = function (){ return 'world3'; }; alert(hoge.world()); // world3
こっちはEchoをnewしてHoge.prototypeに入れているから、
hogeがworldを見つけるためにHogeまでさかのぼっても、
newした後にEcho自身に追加したworldは見つけることができず、
でもEcho.prototypeに追加したworldはprototypeをさかのぼることで見つけることができるのかな?
あー、newの意味がまたわからなくなってきた。
また後で復習してもうちょいがんばる。