国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

ES6 更易于繼承的類語法的使用

2024-05-06 15:42:33
字體:
來源:轉載
供稿:網友

和其它面向對象編程語言一樣,ES6 正式定義了 class 類以及 extend 繼承語法糖,并且支持靜態、派生、抽象、迭代、單例等,而且根據 ES6 的新特性衍生出很多有趣的用法。

一、類的基本定義

基本所有面向對象的語言都支持類的封裝與繼承,那什么是類?

類是面向對象程序設計的基礎,包含數據封裝、數據操作以及傳遞消息的函數。類的實例稱為對象。

ES5 之前通過函數來模擬類的實現如下:

// 構造函數function Person(name) { this.name = name;}// 原型上的方法Person.prototype.sayName = function(){ console.log(this.name);};// new 一個實例var friend = new Person("Jenny");friend.sayName(); // Jennyconsole.log(friend instanceof Person);  // trueconsole.log(friend instanceof Object);  // true

總結來說,定義一個類的思路如下:

1.需要構造函數封裝數據
2.在原型上添加方法操作數據,
3.通過New創建實例

ES6 使用class關鍵字定義一個類,這個類有特殊的方法名[[Construct]]定義構造函數,在 new 創建實例時調用的就是[[Construct]],示例如下:

/*ES6*/// 等價于 let Person = class {class Person { // 構造函數 constructor(name) {  this.name = name; } // 等價于Person.prototype.sayName sayName() {  console.log(this.name); }}console.log(typeof Person);  // functionconsole.log(typeof Person.prototype.sayName);  // functionlet friend = new Person("Jenny");friend.sayName(); // Jennyconsole.log(friend instanceof Person);  // trueconsole.log(friend instanceof Object);  // true

上面的例子中class定義的類與自定義的函數模擬類功能上貌似沒什么不同,但本質上還有很大差異的:

函數聲明可以被提升,但是class類聲明與let類似,不能被提升; 類聲明自動運行在嚴格模式下,“use strict”; 類中所有方法都是不可枚舉的,enumerable 為 false。

二、更靈活的類

類和函數一樣,是JavaScript的一等公民(可以傳入函數、從函數返回、賦值),并且注意到類與對象字面量還有更多相似之處,這些特點可以擴展出類更靈活的定義與使用。

2.1 擁有訪問器屬性

對象的屬性有數據屬性和訪問屬性,類中也可以通過get、set關鍵字定義訪問器屬性:

class Person { constructor(name) {  this.name = name; } get value () {  return this.name + this.age } set value (num) {  this.age = num }}let friend = new Person("Jenny");// 調用的是 setterfriend.value = 18// 調用的是 getterconsole.log(friend.value) // Jenny18

2.2 可計算的成員名稱

類似 ES6 對象字面量擴展的可計算屬性名稱,類也可以用[表達式]定義可計算成員名稱,包括類中的方法和訪問器屬性:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 来宾市| 浦东新区| 穆棱市| 山东| 安远县| 常熟市| 武穴市| 易门县| 横峰县| 黄石市| 绩溪县| 北票市| 临高县| 栖霞市| 孝义市| 仲巴县| 兴国县| 蒲江县| 唐山市| 闵行区| 图们市| 成安县| 邳州市| 望江县| 孝感市| 米易县| 电白县| 博野县| 兴城市| 祁连县| 于都县| 达孜县| 渝北区| 普定县| 金坛市| 桂林市| 伊宁市| 绥滨县| 巍山| 东阳市| 杭州市|