js es6系列教程 - 新的类语法实战选项卡(详解)

发布时间 - 2026-01-11 03:04:31    点击率:

其实es6的面向对象很多原理和机制还是ES5的,只不过把语法改成类似php和java老牌后端语言中的面向对象语法.

一、用es6封装一个基本的类

class Person{
   constructor( uName ){
    this.userName = uName;
   }
   sayName(){
    return this.userName;
   }
  }

是不是很向php和java中的类, 其实本质还是原型链,我们往下看就知道了

首先说下语法规则:

class Person中的Person就是类名,可以自定义

constructor就是构造函数,这个是关键字,当实例化对象的时候,这个构造函数会被自动调用

let oP = new Person( 'ghostwu' );
  console.log( oP.sayName() ); //ghostwu

  console.log( oP instanceof Person ); //true
  console.log( oP instanceof Object ); //true
 
  console.log( typeof Person ); //function
  console.log( typeof Person.prototype.sayName ); //function
  console.log( oP.__proto__ === Person.prototype ); //true
  console.log( 'sayName' in oP ); //true 
  console.log( Person.prototype );

第1行和第2行实例化和调用方法还是跟es5一样

第4行和第5行判断对象是否是类(Person)和Object的实例, 结果跟es5一样, 这个时候,我们肯定会想到Person的本质是否就是一个函数呢

第7行完全验证了我们的想法,类Person本质就是一个函数

第8行可以看到sayName这个函数其实还是加在Person的原型对象上

第9行还是验证了es5的原型链特点:对象的隐式原型指向构造函数的原型对象

第10行验证oP对象通过原型链查找到sayName方法

这种类的语法,被叫做语法糖,本质还是原型链

二、利用基本的类用法,封装一个加法运算

class Operator{
   constructor( n1 = 1, n2 = 2 ){
    this.num1 = n1;
    this.num2 = n2;
   }
   add( n1 = 10, n2 = 20 ){
    let num1 = n1 || this.num1, num2 = n2 || this.num2;
    return num1 + num2;
   }
  }
  var oper = new Operator();
  console.log( oper.add( 100, 200 ) );

三、利用基本的类语法,封装经典的选项卡

css代码:

#tab div {
   width: 200px;
   height: 200px;
   border: 1px solid #000;
   display: none;
  }

  #tab div:nth-of-type(1) {
   display: block;
  }

  .active {
   background: yellow;
  }

html代码:

<div id="tab">
  <input type="button" value="点我1" data-target="#div1" class="active">
  <input type="button" value="点我2" data-target="#div2">
  <input type="button" value="点我3" data-target="#div3">
  <input type="button" value="点我4" data-target="#div4">
  <div id="div1">1</div>
  <div id="div2">2</div>
  <div id="div3">3</div>
  <div id="div4">4</div>
 </div>

javascript代码:

window.onload = () => {
   class Tab {
    constructor( context ) {
     let cxt = context || document;
     this.aInput = cxt.querySelectorAll( "input" );
     this.aDiv = cxt.querySelectorAll( "div" );
    }
    bindEvent(){
     let targetId = null;
     this.aInput.forEach(( ele, index )=>{
      ele.addEventListener( "click", ()=>{
       targetId = ele.dataset.target;
       this.switchTab( ele, targetId );
      });
     });
    }
    switchTab( curBtn, curId ){
     let oDiv = document.querySelector( curId );
     this.aDiv.forEach(( ele, index )=>{
      ele.style.display = 'none';
      this.aInput[index].className = '';
     });
     curBtn.className = 'active';
     oDiv.style.display = 'block';
    }
   }
   new Tab( document.querySelector( "#tab" ) ).bindEvent();
  }

以上这篇js es6系列教程 - 新的类语法实战选项卡(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# js  # es6  # 温习Javascript基础语法之词法结构  # JavaScript语法约定和程序调试原理解析  # javascript中正则表达式语法详解  # javascript 高级语法之继承的基本使用方法示例  # 详解JavaScript 新语法之Class 的私有属性与私有方法  # JSON基本语法及与JavaScript的异同实例分析  # NodeJS模块与ES6模块系统语法及注意点详解  # JavaScript ES6中的简写语法总结与使用技巧  # 关于javascript事件响应的基础语法总结(必看篇)  # 深入理解JavaScript中的语法和代码结构  # 给大家  # 选项卡  # 面向对象  # 一个函数  # 不是很  # 希望能  # 可以看到  # 这个时候  # 自定义  # 这篇  # 小编  # 大家多多  # 加在  # 往下看  # 后端  # 知道了  # 只不过  # 隐式  # 肯定会  # function 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: *服务器网站为何频现安全漏洞?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  音乐网站服务器如何优化API响应速度?  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  如何注册花生壳免费域名并搭建个人网站?  在Oracle关闭情况下如何修改spfile的参数  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  网站页面设计需要考虑到这些问题  JavaScript如何实现音频处理_Web Audio API如何工作?  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  Swift中swift中的switch 语句  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  香港服务器如何优化才能显著提升网站加载速度?  PythonWeb开发入门教程_Flask快速构建Web应用  简单实现jsp分页  中山网站制作网页,中山新生登记系统登记流程?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  php结合redis实现高并发下的抢购、秒杀功能的实例  Python进程池调度策略_任务分发说明【指导】  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  用yum安装MySQLdb模块的步骤方法  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  Laravel如何升级到最新版本?(升级指南和步骤)  Swift中switch语句区间和元组模式匹配  高端网站建设与定制开发一站式解决方案 中企动力  如何在香港服务器上快速搭建免备案网站?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  制作电商网页,电商供应链怎么做?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  如何在不使用负向后查找的情况下匹配特定条件前的换行符  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  中国移动官方网站首页入口 中国移动官网网页登录  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  如何在万网利用已有域名快速建站?  如何在七牛云存储上搭建网站并设置自定义域名?  新三国志曹操传主线渭水交兵攻略  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  利用 Google AI 进行 YouTube 视频 SEO 描述优化  如何续费美橙建站之星域名及服务?  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  EditPlus中的正则表达式 实战(1)