ES6 Class 类(二)

五、子类继承父类方法同时扩展自己的方法

      // 父类有加法方法
	     class Father {
		    constructor(x, y) {
			this.x = x;
			this.y = y;
		}
		    sum() {
			 console.log(this.x + this.y); //8
			}
	    }

     // 子类继承父类加法方法 同时 扩展减法方法
			class Son extends Father {
			  constructor(x, y) {
			    // 利用 super 调用父类的构造函数
			    // super 必须在子类this之前调用 但也可以省略掉this的操作
			    super(x, y);
			    this.x = x;
			    this.y = y;
			  }
			  subtract() {
			    console.log(this.x - this.y); //2
			  }
			}
			var son = new Son(5, 3);
			son.sum();
			son.subtract();

六、类遵循严格模式

 知识要点:
 1、什么是严格模式:
JavaScript除了提供正常模式外,还提供了严格模式。ES5的严格模式是采用具有限制性;JavaScript变体的一种方式,即在严格的条件下运行的JS代码
严格模式在IE10以上版本的浏览器中才会被支持,旧版本浏览器中会被忽略
 2、怎么开启严格模式:
【为函数开启严格模式】两种情况
 一、为脚本开启严格模式
为整个脚本文件开启严格模式,需要在所有语句之前放一个特定语句 "use strict";(或 'use strict';)
 二、为函数开启严格模式
要给某个函数开启严格模式,需要把 "use strict";(或 'use strict';)声明放在函数体所有语句之前 

function fn() {
    "use strict";
	 console.log(this);
}
	fn();
class Star {
	show() {
	function uname() {
	     console.log(this);
	}
	uname();
    }
}
	var star = new Star();
	star.show();

七、类的静态属性

知识要点:
一、构造函数的静态成员和实例成员
(1)静态成员:在构造函数本上添加的成员称为静态成员,只能由构造函数本身访问
静态成员 在构造函数本身上添加成员
静态成员 只能通过构造函数来访问
(2)实例成员:在构造函数内部创建对象成员称为实例成员,只能由实例化的对象来访问
实例成员就是构造函数内部通过this添加的成员 uname、age、sing 就是实例成员
实例成员只能通过实例化的对象来访问

二、类里面的静态属性——[static]
class本身的属性,即直接定义在类内部的属性(Class.propname),不需要实例化。 ES6 中规定,Class 内部只有静态方法,没有静态属性。

            //1.构造函数里的静态成员和实例成员
			    function Star(uname, age) {
			      this.uname = uname;
			      this.age = age;
			          this.show = function () {
			          console.log("我是实例成员");
			     };
			}
			     var star = new Star("王总", 18);
			    console.log(star.uname);
			    console.log(Star.uname); //实例成员不可以通过构造函数来访问
			     star.show();
			    Star.sex = "男";
			    console.log(star.sex); //静态成员不可以通过对象来访问
			    console.log(Star.sex);

			    Star.prototype.show = function () {
			      console.log("我是通过原型的方法");
			    };
			    star.show();
			    star.__proto__.show = function () {
			      console.log("我是方法");
			    };
			    star.show();
			    console.log(star); 


			 //2.类里面的静态
			    class Star {
			  constructor(uname, age) {
			    this.uname = uname;
			    this.age = age;
			  }
			  show() {
			    console.log("我原型对象是" + this.uname);
			  }
			  static sing(uname) {
			    console.log("我原型对象是" + uname);
			  }
			}
			var star = new Star("王总", 18);
			var star1 = new Star("王老板");
			star.show();
			Star.sing("王老板");


			//3.子类的静态方法能够通过super来调用父类的静态方法
			    class Person {
			  static getName() {
			    return "lear";
			  }
			}
			class Student extends Person {
			  static getName2() {
			    return super.getName() + ",hi";
			  }
			}
			console.log(Student.getName2());

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值