JavaScript では、new 演算子はカスタム オブジェクト インスタンス、またはコンストラクターに組み込まれたオブジェクトのインスタンスを作成するために使用されます。new によって作成されたインスタンスは、コンストラクター Person のプロパティにアクセスできます。
このチュートリアルの動作環境: Windows 10 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
new の目的
new: new 演算子は、カスタム オブジェクト インスタンス、または組み込みコンストラクターを作成するために使用されます。オブジェクトの例。どういう意味ですか?ちょっと発音が難しいので、まずは見てみましょう。
新しい F() の場合に何が起こるか
最初のバージョン
栗はここにあります:
function Person(name, age) { this.name = name this.age = age console.log(this) // Person{name: "xuedinge", age: "20"} } Person.prototype.have = "cat" const person = new Person("xuedinge", "20") console.log(person.name) // xuedinge console.log(person.have) // cat console.log(person) // Person{name: "xuedinge", age: "20"}
この栗から、新しいものには が含まれていることがわかります。次の機能:
1. new によって作成されたインスタンスは、コンストラクター Person のプロパティにアクセスできます;
2. new によって作成されたインスタンスは、コンストラクター プロトタイプのプロパティにアクセスできます;
3. new は、コンストラクター内でこれを新しく作成されたオブジェクトにバインドできます;
次に、最初に new のこれら 3 つの機能を実装します:
function fakeNew(Fn) { // 创建一个空对象 let obj = new Object() // 将新对象的原型指针指向构造函数的原型 obj.__proto__ = Fn.prototype // 处理除了 Fn 以外的剩余参数 Fn.apply(obj, [].slice.call(arguments, 1)) return obj }
効果を確認してください
function Person(name, age) { this.name = name this.age = age console.log(this) // Person {name: "xuedinge", age: "20"} } Person.prototype.have = "cat" function fakeNew(Fn) { // 创建一个空对象 let obj = new Object() // 将新对象的原型指针指向构造函数的原型 obj.__proto__ = Fn.prototype // 处理除了 Fn 以外的剩余参数 Fn.apply(obj, [].slice.call(arguments, 1)) return obj } const newPerson = fakeNew(Person, "xuedinge", "20") console.log(newPerson.name) // xuedinge console.log(newPerson.have) // 20 console.log(newPerson) // Person {name: "xuedinge", age: "20"}
ニューの能力と似ているようです。しかし、コンストラクターに戻り値がある場合はどうなるのでしょうか? もう一度見てみましょう:
// 当返回值是对象时: function Person(name, age) { this.name = name this.age = age console.log(this) // Person {name: "xuedinge", age: "20"} return { car: "leikesasi" } } Person.prototype.have = "cat" const person = new Person("xuedinge", "20") console.log(person.name) // undefined console.log(person.have) // undefined console.log(person.car) // leikesasi console.log(person) // {car: "leikesasi"}
コンストラクターの戻り値がオブジェクトの場合、new によって作成されるインスタンス オブジェクトはコンストラクタの戻り値 戻り値が通常のオブジェクトの場合の結果を見てください:
// 当返回值是普通值时: unction Person(name, age) { this.name = name this.age = age console.log(this) // Person{name: "xuedinge", age: "20"} return "leikesasi" } Person.prototype.have = "cat" const person = new Person("xuedinge", "20") console.log(person.name) // xuedinge console.log(person.have) // cat console.log(person) // Person{name: "xuedinge", age: "20"}
戻り値が通常のオブジェクトの場合、戻り値がない場合と同じ結果になります。
関連する推奨事項: JavaScript 学習チュートリアル
以上がJavaScriptでのnewの使い方は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。