您好,登錄后才能下訂單哦!
這篇文章主要介紹“JavaScript ES6中class定義類的方法有哪些”,在日常操作中,相信很多人在JavaScript ES6中class定義類的方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JavaScript ES6中class定義類的方法有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
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
如果我們希望在創建對象的時候給類傳遞一些參數,這個時候應該怎么做呢?
每個類都可以有一個自己的構造函數(方法),這個方法的名稱是固定的 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
執行函數體中的代碼
自動返回創建出來的對象
**
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()
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)
類的靜態方法就是在方法前加一個
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)
隨機生成多個Person實例(附帶效果圖)
// 隨機生成多個 for (let index = 0; index < 20; index++) { console.log(Person.randomPerson()) }
到此,關于“JavaScript ES6中class定義類的方法有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。