深度が浅いJavaScript:構造関数
1179 ワード
構造関数
通常、オブジェクトが同じまたは同じ状態構造(つまり同じ属性セット)を持つ必要があり、異なる状態の値を付与します.この場合は、指定されたパターンでオブジェクトを作成するコンストラクタfunctionを使用する必要があります.
指定されたモードでオブジェクトを作成する以外に、構造関数も別の有用なことをしました.新たに作成されたオブジェクトのプロトタイプオブジェクトを自動的に設定します.このプロトタイプオブジェクトは
言い換えれば、オブジェクトbとオブジェクトcを持つ例を書き換えるためにコンストラクタを使用することができる.したがって、対象aの役割はFoo.prototypeで演じられます.
通常、オブジェクトが同じまたは同じ状態構造(つまり同じ属性セット)を持つ必要があり、異なる状態の値を付与します.この場合は、指定されたパターンでオブジェクトを作成するコンストラクタfunctionを使用する必要があります.
指定されたモードでオブジェクトを作成する以外に、構造関数も別の有用なことをしました.新たに作成されたオブジェクトのプロトタイプオブジェクトを自動的に設定します.このプロトタイプオブジェクトは
ConstructorFunction.prototype
属性に格納されている.言い換えれば、オブジェクトbとオブジェクトcを持つ例を書き換えるためにコンストラクタを使用することができる.したがって、対象aの役割はFoo.prototypeで演じられます.
// Foo( foo)
function Foo(y) {
this.y = y;
// prototype , Foo.prototype
// __proto__ , Function.prototype( __proto__ , Object.prototype<...>)
}
// Foo.prototype x , 10
Foo.prototype.x = 10;
// Foo.prototype calculate
Foo.prototype.calculate = function (z) {
return this.x + this.y + z;
};
// Foo b,c
var b = new Foo(20);
var c = new Foo(30);
// calculate
b.calculate(30); // 60
c.calculate(40); // 80
console.log(
b.__proto__ === Foo.prototype, // true
c.__proto__ === Foo.prototype, // true
b.constructor === Foo, // true
c.constructor === Foo, // true
Foo.prototype.constructor === Foo // true
b.calculate === b.__proto__.calculate, // true
b.__proto__.calculate === Foo.prototype.calculate // true
);