このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
js:object:chain [2021/05/12 09:39] tanaka [プロトタイプチェーン] |
js:object:chain [2021/05/24 12:56] (現在) tanaka |
||
---|---|---|---|
行 2: | 行 2: | ||
--- // | --- // | ||
+ | |||
+ | ===== prototypeオブジェクト ===== | ||
+ | |||
+ | <sxh javascript; | ||
+ | var Student = function(name) { | ||
+ | this.name = name; | ||
+ | }; | ||
+ | |||
+ | Student.prototype.greeting = function() { | ||
+ | console.log(`I am ${this.name}.`); | ||
+ | }; | ||
+ | |||
+ | // 年齢(age)はオブジェクト毎に保持されるべきなので、prototypeには適さない。 | ||
+ | // 但し参照のみの初期値として使用することはできる。 | ||
+ | Student.prototype.age = 15; | ||
+ | |||
+ | // suzukiはStudentのprototypeの参照を保持する。 | ||
+ | var suzuki = new Student(' | ||
+ | suzuki.greeting(); | ||
+ | </ | ||
+ | |||
+ | === プロトタイプを使用するメリット === | ||
+ | |||
+ | - メモリ量の節約できる | ||
+ | - メンバの追加/ | ||
+ | |||
+ | \\ | ||
===== プロトタイプチェーン ===== | ===== プロトタイプチェーン ===== | ||
行 69: | 行 96: | ||
</ | </ | ||
- | constructorプロパティは継承元を返す | + | constructorプロパティは継承元を返す。 |
\\ | \\ | ||
- | ===== constructorプロパティとinstanceof | + | ===== isPrototypeOfメソッド |
<sxh javascript; | <sxh javascript; | ||
行 90: | 行 117: | ||
</ | </ | ||
- | obj.prototype.isPrototypeOf(a)はobjプロトタイプがaのプロトタイプに存在するか否かを返す | + | obj.prototype.isPrototypeOf(a)はobjプロトタイプがaのプロトタイプに存在するか否かを返す。 |
\\ | \\ |