欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ES6 class的應用實例分析

 更新時間:2019年06月27日 09:07:30   作者:Johnny丶me  
這篇文章主要介紹了ES6 class的應用,結合實例形式分析了class在ES6面向對象程序設計中定義類的相關操作技巧,需要的朋友可以參考下

本文實例講述了ES6 class的應用。分享給大家供大家參考,具體如下:

class

  • class 本身是個語法糖,主要為了考慮在編碼上更加人性化
  • 內部有super,static,get 等關鍵詞
  • 使用起來非常類似于后臺語言

使用class進行類的實現應用

'use strict';
// User 類
class User {
 constructor(name,age) {
  this.name = name;
  this.age = age;
 }
 static getName() {
  return 'User';
 }
 static getAge() {
  return this.age;
 }
 setName(name) {
  this.name = name;
 }
 setAge(age) {
  this.age = age;
 }
 get info() {
  return 'name:' + this.name + ' | age:' + this.age;
 }
}
// Manager 類
class Manager extends User{
 constructor(name,age,password){
  super(name,age);
  this.password = this.password;
 }
 changePwd(pwd) {
  return this.password = pwd;
 }
 get info() {
  var info = super.info; // 使用super繼承父級 get
  return info + ' === new';
 }
}
// typeof User: function typeof Manager: function
console.log('typeof User: ', typeof User, ' typeof Manager: ', typeof Manager); 
let manager = new Manager('Li', 22, '123456');
manager.setAge(23);
console.log(manager.info); // name:Li | age:23 === new
console.log(User.prototype);
console.log(Manager.prototype); 

在class之前使用原型對象定義類的應用

// 構造函數
function User(name,age) {
 this.name = name;
 this.age = age;
}
// 原型
User.prototype = {
 getName:function(){
  return 'User';
 },
 setName:function(name){
  this.name = name;
 },
 getAge:function(){
  return this.age;
 },
 setAge:function(age){
  this.age = age;
 }
}
// 取值函數和存執(zhí)函數
Object.defineProperty(User.prototype,'info', {
 get() {
  return 'name:' + this.name + ' | age:' + this.age;
 }
});
var user = new User('Joh', 26);
console.log(user); // User {name: "Joh", age: 26}
// 子類
function Manager(name, age, password) {
 User.call(this, name, age);
 this.password = password;
}
Manager.__proto__ = User; // 繼承靜態(tài)方法
Manager.prototype = Object.create(User.prototype); // 繼承prototype原型方法
Manager.prototype.changePwd = function (pwd) {
 this.password = pwd;
};
var manager = new Manager('Li', 22, '123456');
manager.setAge(23);
console.log(manager.info); // name:Li | age:23
console.log(User.prototype); // 不變
console.log(Manager.prototype); // {changePwd:function(){}, info:"name:undefined | age:undefined", __proto__:指向Manager.prototype}

使用 class 定義的類不被提升,需按順序執(zhí)行

正常:

let user = new class User {
 constructor(name) {
  this.name = name;
 }
}('Joh');
console.log(user); // User {name: "Joh"}

錯誤:

var man = new Man(); // 此處報錯,使用class聲明的類不會被提升 Uncaught ReferenceError: Man is not defined
class Man {
 constructor(name){
  this.name = name;
 }
}

更多關于JavaScript相關內容可查看本站專題:《javascript面向對象入門教程》、《JavaScript查找算法技巧總結》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

相關文章

  • 深入淺析同源策略和跨域訪問

    深入淺析同源策略和跨域訪問

    同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響??梢哉fWeb是構建在同源策略基礎之上的,瀏覽器只是針對同源策略的一種實現
    2015-11-11
  • 原生javascript兼容性測試實例

    原生javascript兼容性測試實例

    原生javascript兼容性:currentStyle、scrollTop、event以及綁定事件IE的綁定事件為attachEvent/detachEvent等等兼容性測試實例,感興趣的朋友可以參考下哈
    2013-07-07
  • 可以拖動的div 實現代碼

    可以拖動的div 實現代碼

    可以拖動的div是一個比較難以做到的效果,特別是在瀏覽器對于js代碼的運行效率還不是足夠高的情況下,不過聽說firefox對于js的支持正在增加,大概是料到了js在網頁瀏覽的桌面化趨勢中所占的重要地位吧。
    2009-06-06
  • Webpack介紹和基本使用指南

    Webpack介紹和基本使用指南

    Webpack 本身功能比較少,只能處理 js 資源,一旦遇到 css 等其他資源就會報錯,本文給大家講解Webpack介紹和基本使用指南,感興趣的朋友一起看看吧
    2024-02-02
  • JavaScript實現網頁加載進度條代碼超簡單

    JavaScript實現網頁加載進度條代碼超簡單

    網頁進度條能夠更好的反應當前網頁的加載進度情況,loading進度條可用動畫的形式從開始0%到100%完成網頁加載這一過程。代碼簡單易懂,效果非常好,需要的一起學習學習吧
    2015-09-09
  • 基于es6三點運算符的使用方法(實例講解)

    基于es6三點運算符的使用方法(實例講解)

    下面小編就為大家?guī)硪黄谌c運算符的使用方法(實例講解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • js同源策略詳解

    js同源策略詳解

    這篇文章主要介紹了js同源策略,較為詳細的分析了javascript中同源策略的概念與相關應用注意事項,需要的朋友可以參考下
    2015-05-05
  • Jquery作者John Resig自己封裝的javascript 常用函數

    Jquery作者John Resig自己封裝的javascript 常用函數

    Jquery作者John Resig自己封裝的常用函數, 大家可以參考下。
    2009-11-11
  • 淺談在fetch方法中添加header后遇到的預檢請求問題

    淺談在fetch方法中添加header后遇到的預檢請求問題

    下面小編就為大家?guī)硪黄獪\談在fetch方法中添加header后遇到的預檢請求問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • js中小數向上取整數,向下取整數,四舍五入取整數的實現(必看篇)

    js中小數向上取整數,向下取整數,四舍五入取整數的實現(必看篇)

    下面小編就為大家?guī)硪黄猨s中小數向上取整數,向下取整數,四舍五入取整數的實現(必看篇)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論