91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

JavaScript?ES6中class定義類的方法有哪些

發布時間:2022-07-08 13:43:12 來源:億速云 閱讀:279 作者:iii 欄目:開發技術

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

1.聲明類的兩種方式:

class 關鍵字 類的聲明

class Person{}

類表達式(不常用)

var People = class { }

那么 Person類的原型是什么?如下展示了原型和typeof中Person的類型

console.log(Person.prototype) // Person {}
console.log(Person.prototype.__proto__) // {}
console.log(Person.constructor) // [Function: Function]
console.log(typeof Person) // function

2.class 類的構造函數

如果我們希望在創建對象的時候給類傳遞一些參數,這個時候應該怎么做呢?

  • 每個類都可以有一個自己的構造函數(方法),這個方法的名稱是固定的 constructor

  • 當我們通過new操作符,操作一個類的時候會調用這個類的構造函數constructor

  • 每個類只能有一個構造函數,如果包含多個構造函數,那么會拋出異常。

示例代碼如下:

// 類的聲明
class Person {
    // 類的構造方法
    constructor(name, age) {
        this.name = name
        this.age = age
    }
    foo () {
        console.log(this.name)
    }
}
var p1 = new Person('h', 19)

console.log(p1)// Person { name: 'h', age: 19 }
p1.foo() // h

當我們通過new關鍵字操作類的時候,會調用這個 constructor函數,并執行如下操作(假設new關鍵字新創建的對象為p1):

  • 在內存中創建一個對象

  • 將類的原型prototype賦值給創建出來的對象 p1.__proto__ = Person.prototype

  • 將對象賦值給函數的this:new綁定 this = p1

  • 執行函數體中的代碼

  • 自動返回創建出來的對象
    **

3.class中方法定義

3.1 class 中定義普通的實例方法
class Person {
    // 類的構造方法
    constructor(name, age) {
        this.name = name
        this.age = age
        this._address = '北京市'
    }
    eating () {
        console.log(this.name + ' 正在eating~')
    }
    running () {
        console.log(this.name + ' 正在running~')
    }
}

var p1 = new Person('jam', 19)
console.log(p1)
p1.eating()
p1.running()
3.2 class 類中定義訪問器方法
class Person {
    // 類的構造方法
    constructor(name, age) {
        this.name = name
        this.age = age
        this._address = '北京市'
    }
    // 類的訪問器方法
    get address () {
        // 在這里可以設置攔截訪問操作
        console.log('獲取呢')
        return this._address
    }
    set address (newValue) {
        // 在這里可以設置攔截設置操作
        console.log('修改呢')
        return this._address = newValue
    }
}

var p1 = new Person('jam', 19)
console.log(p1.address)
p1.address = '天津市'
console.log(p1.address)
3.3 類的靜態方法(類方法)

類的靜態方法就是在方法前加一個static關鍵字,該方法就成為了類的靜態方法。
類的靜態方法,不會被類的實例繼承,而是直接通過類來調用。

小案例:使用類的靜態方法完成隨機生成Person實例

class Person {
    // 類的構造方法
    constructor(name, age) {
        this.name = name
        this.age = age
        this._address = '北京市'
    }
    
    // 類的靜態方法(也稱為類方法)  創建對象隨機生成一個名字小案例
    static randomPerson () {
        // 創建一個存儲名字的數組
        let names = ['jam', 'jak', 'jag', 'jao', 'jno']
        // Math.random()生成一個0-1之間的數字,小數肯定是不對的
        let nameIndex = Math.floor(Math.random() * names.length)
        let name = names[nameIndex]
        // 生成隨機年齡
        let age = Math.floor(Math.random() * 100)
        // return隨機生成的人物 姓名+ 年齡
        return new Person(name, age)
    }
}

這里直接調用類的靜態方法就可以 不需要使用new操作符創建創建實例對象

隨機生成一個Person實例(附效果圖)

// 隨機生成一個  
var p2 = Person.randomPerson()
console.log(p2)

JavaScript?ES6中class定義類的方法有哪些

隨機生成多個Person實例(附帶效果圖)

// 隨機生成多個
for (let index = 0; index < 20; index++) {
    console.log(Person.randomPerson())
}

JavaScript?ES6中class定義類的方法有哪些

到此,關于“JavaScript ES6中class定義類的方法有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

汉中市| 徐汇区| 东阳市| 会宁县| 宿迁市| 河津市| 绵阳市| 濮阳市| 江都市| 桃园县| 新平| 永德县| 潜山县| 军事| 东乡县| 枣庄市| 罗城| 霍州市| 望都县| 大城县| 宜都市| 长汀县| 林周县| 贞丰县| 阜新| 淮安市| 麻阳| 甘洛县| 阿勒泰市| 遂宁市| 苏尼特右旗| 同心县| 桑日县| 乐山市| 库伦旗| 合作市| 巨野县| 内丘县| 丰城市| 织金县| 灵武市|