溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javascript中new方法怎么使用

發布時間:2022-02-04 14:05:41 來源:億速云 閱讀:201 作者:zzz 欄目:web開發

這篇文章主要介紹“javascript中new方法怎么使用”,在日常操作中,相信很多人在javascript中new方法怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”javascript中new方法怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

在JavaScript中,new運算符用于創建一個自定義對象實例,或者是一個構造函數內置對象的實例;new創建出來的實例可以訪問構造函數Person內的屬性。

本教程操作環境:windows10系統、javascript1.8.5版、Dell G3電腦。

javascript中new的用法是什么

new 的用途

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"}

從這個栗子中,我們可以看到,new 具有以下能力:

1、new 創建出來的實例可以訪問構造函數Person內的屬性;

2、new 創建出來的實例可以訪問構造函數原型上的屬性;

3、new 可以將構造函數中的this綁定到新創建出來的對象上;

那我們就先針對new的這三個能力先實現一下:

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"}

看樣子跟new的能力比較相像了。但是當構造函數里有返回值時,是怎么樣子的呢,再看個:

// 當返回值是對象時:
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中new方法怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女