Dalam JavaScript, pengendali baharu digunakan untuk mencipta tika objek tersuai, atau tika objek terbina dalam pembina boleh mengakses sifat dalam Orang pembina.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi JavaScript 1.8.5, komputer Dell G3.
Penggunaan baharu
baharu: Operator baharu digunakan untuk mencipta contoh objek tersuai atau pembina terbina dalam objek Contoh. Apakah maksudnya? Agak sukar untuk menyebutnya.
Apa yang berlaku apabila F() baharu
Versi pertama
Berangan ada di sini:
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"}
Daripada chestnut ini, kami boleh Seperti yang anda boleh lihat, new mempunyai keupayaan berikut:
1 Contoh yang dibuat oleh baru boleh mengakses sifat dalam Orang pembina
2 prototaip.
3 baru boleh mengikat ini dalam pembina kepada objek yang baru dibuat; Jom kita tengok kesannya
Nampaknya sama dengan kemampuan baru. Tetapi bagaimana rupanya apabila terdapat nilai pulangan dalam pembina Lihat ini sekali lagi: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"}
Cadangan berkaitan:
Tutorial pembelajaran javascript// 当返回值是普通值时: 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"}
Atas ialah kandungan terperinci Apakah kegunaan new dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!