ES6-Class

1. Class 铺垫

在这里插入图片描述

2. 回顾了解ES5

  • 构造函数
  • 私有属性和公有属性
  • 私有属性继承和公有属性继承
	Union.prototype.public = function(){
            console.log('公有属性访问')
        }
	function Union(){
            this.name = 'LOL',
            this.age = '666',
            this.kill = function(){
                console.log('五杀')
            }
        }
        var hero = new Union()
        var hero1 = new Union()
        
         hero.public()
         hero1.public()

私有属性:函数里面用 this 挂载的属性是私有属性 ,在 new 操作执行时,生成一个this对象,然后创建新的私有属性。
公有属性:Union.prototype.public;原型链挂载的属性是公有属性, hero和 hero1 都能访问 public 这个属性

私有属性继承和公有属性继承:

__proto__实现继承 ;原型链的继承;查找一个属性的时候,自身是否有属性,没有就沿着作用域链的顶端查找,这种 形式避免继承了一些私有属性,达到了高效共享原型的形式

	Union.prototype.public = function(){
            console.log('公有属性')  
        }
        function Union(name){
            this.name = name || 'LOL',
            console.log(this.name)
            this.age = '666',
            this.kill = function(){
                console.log('五杀')
            }
        }
        
         //下面这种形式的写法,如果对 __proto__ 属性理解不深刻,很容易发生错误
         
         // Rope.prototype.__proto__ = Union.prototype
        
        //建议使用下面这种形式,系统提供设置 共享原型 API ;概念理解和 __proto__ 继承是相同的
        
        Object.setPrototypeOf(Rope.prototype,Union.prototype)
        
        Rope.prototype.wind = function(){
            console.log("风墙")
        }
        function Rope(name){
            this.name = '斩杀'

            Union.call(this,name)
        }

        var oAP = new Rope()

知识拓展:

   // 这种形式也能实现属性继承
	Rope.prototype = Object.create(Union.prototype,{
            constructor : Rope
        })

3. ES6 之 Class

class 是ES6提供的语法糖。
class 构造的原型不能枚举。
class 必须 new,不然报错

	class Union {
	
		//静态方法(static);是自身构造函数的属性方法;不是在原型里面定义的
		
        static Rope (){ 
            return '斩杀'
        }
        
        constructor() {
          this.name = "LOL"
          this.age = "666"
        }
        kill() { //定义在原型上面的方法
          console.log("五杀");
        }
      }

      var oAP = new Union()

控制台输出:

构造函数定义的 kill 方法在__proto__属性里面。

在这里插入图片描述

  • extends 继承
class Union {
 
        static Rope (){ 
            return '斩杀'
        }
        
        constructor(name) {
          this.name = name || "LOL"
          this.age = "666"
        }
        kill() { 
          console.log("五杀");
        }
      }
      //extends 属性继承
      class Rope extends Union{
          constructor(name){
              super(name) // 相当于 Union.call(this,name) 的形式
              this.recruit = '风墙'
          }
      }

      var oAP = new Rope()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值