Apakah kegunaan new dalam javascript

WBOY
Lepaskan: 2022-01-28 16:24:47
asal
4523 orang telah melayarinya

Dalam JavaScript, pengendali baharu digunakan untuk mencipta tika objek tersuai, atau tika objek terbina dalam pembina boleh mengakses sifat dalam Orang pembina.

Apakah kegunaan new dalam javascript

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi JavaScript 1.8.5, komputer Dell G3.

Apakah penggunaan baharu dalam javascript?

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"}
Salin selepas log masuk

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
}
Salin selepas log masuk

Ia boleh dilihat bahawa apabila pembina mempunyai nilai pulangan yang merupakan objek, objek contoh? dicipta oleh baru ialah pembina Hasil yang dikembalikan oleh fungsi, apabila nilai pulangan adalah objek biasa, lihat ini:
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"}
Salin selepas log masuk

Apabila nilai pulangan adalah objek biasa, hasilnya adalah sama seperti apabila tiada nilai pulangan.
// 当返回值是对象时:
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"}
Salin selepas log masuk

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"}
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah kegunaan new dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!