JSのnew操作符
1296 ワード
一、newの使用
構造関数を定義し、newでオブジェクトを作成すると
二、newオブジェクト作成プロセス
紅宝書による説明は以下の4つのステップに分けられます.新しいオブジェクトを作成します. は、構造関数の関数的スコープを新しいオブジェクトに割り当てます. は、コンストラクタ内のコード(この新しいオブジェクトに属性を追加)を実行します. は新しいオブジェクトを返します. 三、シミュレーションでnew操作を実現する
構造関数を定義し、newでオブジェクトを作成すると
function Person(){
}
var person = new Person();
console.log(person); // Person{}
この立体関数のプロトタイプを指すオブジェクトを返します.二、newオブジェクト作成プロセス
紅宝書による説明は以下の4つのステップに分けられます.
// newObj ,
function newObj(fn, ...arg) {
// 1.
var obj = {};
// 2.
obj.__proto__ = fn.prototype;
// 3. fn this obj
fn.apply(obj, arg);
// 4.
return obj;
}
function newObj(fn, ...arg) {
let obj = Object.create(fn.prototype);
fn.apply(obj, arg);
return obj;
}
次にnewObj関数をテストします.function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
// Person sayName()
Person.prototype.sayName = function() {
alert(this.firstName + " " + this.lastName);
}
// newObj Person
var pitt = newObj(Person, "Bob", "Pitt");
// sayName()
pitt.sayName(); // "Bob Pitt"
// new
var sunny = new Person("Bob", "Sunny");
sunny.sayName(); // "Bob Sunny"