最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

原生JavaScript之es6中Class的用法分析

 更新時(shí)間:2020年02月23日 11:23:02   作者:巴啦啦小能量  
這篇文章主要介紹了原生JavaScript之es6中Class的用法,結(jié)合實(shí)例形式對(duì)比分析了es6與es5相關(guān)class定義、區(qū)別及使用技巧,需要的朋友可以參考下

本文實(shí)例講述了原生JavaScript之es6中Class的用法。分享給大家供大家參考,具體如下:

es6class寫(xiě)法

class Point {
 constructor(x, y) {
  this.x = x;
  this.y = y;
 }
 toString() {
  return '(' + this.x + ', ' + this.y + ')';
 }
}

es5寫(xiě)法

function Point(x, y) {
 this.x = x;
 this.y = y;
}
Point.prototype.toString = function () {
 return '(' + this.x + ', ' + this.y + ')';
};
var p = new Point(1, 2);

對(duì)比一下

基本上,ES6 的class可以看作只是一個(gè)語(yǔ)法糖,它的絕大部分功能,ES5 都可以做到,新的class寫(xiě)法只是讓對(duì)象原型的寫(xiě)法更加清晰、更像面向?qū)ο缶幊痰恼Z(yǔ)法而已。上面的代碼用 ES6 的class改寫(xiě) 就是第一個(gè)那樣

上面代碼定義了一個(gè)“類(lèi)”,可以看到里面有一個(gè)constructor方法,這就是構(gòu)造方法,而this關(guān)鍵字則代表實(shí)例對(duì)象。也就是說(shuō),ES5 的構(gòu)造函數(shù)Point,對(duì)應(yīng) ES6 的Point類(lèi)的構(gòu)造方法。

Point類(lèi)除了構(gòu)造方法,還定義了一個(gè)toString方法。注意,定義“類(lèi)”的方法的時(shí)候,前面不需要加上function這個(gè)關(guān)鍵字,直接把函數(shù)定義放進(jìn)去了就可以了。另外,方法之間不需要逗號(hào)分隔,加了會(huì)報(bào)錯(cuò)。

使用的時(shí)候,也是直接對(duì)類(lèi)使用new命令,跟構(gòu)造函數(shù)的用法完全一致。

class Bar {
 doStuff() {
  console.log('stuff');
 }
}
var b = new Bar();
b.doStuff() // "stuff"

其實(shí)就是調(diào)用原型上的方法。

| `class B {}
let b = new B();

b.constructor === B.prototype.constructor // true`| |

上面代碼中,b是B類(lèi)的實(shí)例,它的constructor方法就是B類(lèi)原型的constructor方法。

constructor 方法

constructor方法是類(lèi)的默認(rèn)方法,通過(guò)new命令生成對(duì)象實(shí)例時(shí),自動(dòng)調(diào)用該方法。一個(gè)類(lèi)必須有constructor方法,如果沒(méi)有顯式定義,一個(gè)空的constructor方法會(huì)被默認(rèn)添加。

class Point {
}
// 等同于
class Point {
 constructor() {}
}

上面代碼中,定義了一個(gè)空的類(lèi)Point,JavaScript 引擎會(huì)自動(dòng)為它添加一個(gè)空的constructor方法。

constructor方法默認(rèn)返回實(shí)例對(duì)象(即this),完全可以指定返回另外一個(gè)對(duì)象。

class Foo {
 constructor() {
  return Object.create(null);
 }
}
new Foo() instanceof Foo

靜態(tài)方法

類(lèi)相當(dāng)于實(shí)例的原型,所有在類(lèi)中定義的方法,都會(huì)被實(shí)例繼承。如果在一個(gè)方法前,加上static關(guān)鍵字,就表示該方法不會(huì)被實(shí)例繼承,而是直接通過(guò)類(lèi)來(lái)調(diào)用,這就稱(chēng)為“靜態(tài)方法”。

class Foo {
 static classMethod() {
  return 'hello';
 }
}
Foo.classMethod() // 'hello'
var foo = new Foo();
foo.classMethod()

注意,如果靜態(tài)方法包含this關(guān)鍵字,這個(gè)this指的是類(lèi),而不是實(shí)例。
父類(lèi)的靜態(tài)方法,可以被子類(lèi)繼承

class Foo {
 static classMethod() {
  return 'hello';
 }
}
class Bar extends Foo {
}
Bar.classMethod() // 'hello'

上面代碼中,父類(lèi)Foo有一個(gè)靜態(tài)方法,子類(lèi)Bar可以調(diào)用這個(gè)方法。

靜態(tài)方法也是可以從super對(duì)象上調(diào)用的。

class Foo {
 static classMethod() {
  return 'hello';
 }
}
class Bar extends Foo {
 static classMethod() {
  return super.classMethod() + ', too';
 }
}
Bar.classMethod() /

感興趣的朋友可以使用在線(xiàn)HTML/CSS/JavaScript代碼運(yùn)行工具http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專(zhuān)題:《JavaScript操作DOM技巧總結(jié)》、《JavaScript頁(yè)面元素操作技巧總結(jié)》、《JavaScript事件相關(guān)操作與技巧大全》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

博爱县| 绵阳市| 集安市| 万宁市| 横山县| 馆陶县| 襄汾县| 西吉县| 布尔津县| 石台县| 仁化县| 兴宁市| 英德市| 河南省| 修武县| 正镶白旗| 新干县| 睢宁县| 麻栗坡县| 上饶县| 锡林郭勒盟| 天等县| 土默特右旗| 兰坪| 双峰县| 甘南县| 宣汉县| 锡林郭勒盟| 屏东县| 霍邱县| 英吉沙县| 双峰县| 黔西县| 扎兰屯市| 贺州市| 方山县| 东阳市| 沐川县| 凯里市| 江达县| 札达县|