YanoRyuichi.com/
Wiki
Blog
GitHub
Sandbox
開始行:
* プロトタイプチェイン・プロトタイプ継承 [#i3e0a439]
** 前提 [#b61a4c99]
var Animal = function() {};
Animal.prototype = {
say: function() { alert("I am an Animal"); }
};
var Dog = function() {};
Dog.prototype = new Animal;
Dog.prototype.say = function() { alert("I am a dog"); }
以上のように親クラスAnimalと子クラスDogを作り、プロトタイ...
** プロトタイプチェイン [#efb4d835]
var d = new Dog;
d.say();
上の場合メソッドsay()の検索は次の順で行われる。
- d.say()
- Dog.prototype.say()
- Animal.prototype.say()
- Object.prototype.say()
親クラスを辿って行き、最終的にObject.prototypeで見つから...
** プロトタイプ継承の注意点 [#fbdffe52]
継承のために、
Dog.prototype = new Animal;
ではなく、
Dog.prototype = Animal.prototype;
としてはならない。この場合、DogのprototypeはAnimalのproto...
Dog.prototype.foo = function () { alert('foo()'); };
のようにDogにメソッドを追加すると、Animalにもメソッドが追...
var a = new Animal();
a.foo(); // 本来、未定義であるべき
終了行:
* プロトタイプチェイン・プロトタイプ継承 [#i3e0a439]
** 前提 [#b61a4c99]
var Animal = function() {};
Animal.prototype = {
say: function() { alert("I am an Animal"); }
};
var Dog = function() {};
Dog.prototype = new Animal;
Dog.prototype.say = function() { alert("I am a dog"); }
以上のように親クラスAnimalと子クラスDogを作り、プロトタイ...
** プロトタイプチェイン [#efb4d835]
var d = new Dog;
d.say();
上の場合メソッドsay()の検索は次の順で行われる。
- d.say()
- Dog.prototype.say()
- Animal.prototype.say()
- Object.prototype.say()
親クラスを辿って行き、最終的にObject.prototypeで見つから...
** プロトタイプ継承の注意点 [#fbdffe52]
継承のために、
Dog.prototype = new Animal;
ではなく、
Dog.prototype = Animal.prototype;
としてはならない。この場合、DogのprototypeはAnimalのproto...
Dog.prototype.foo = function () { alert('foo()'); };
のようにDogにメソッドを追加すると、Animalにもメソッドが追...
var a = new Animal();
a.foo(); // 本来、未定義であるべき
ページ名: