ES6 class写面向对象--语法糖

		class Abc{
			constructor(){//属性
				this.a=100;
			}
			num(){//方法
				alert(this.a);
			}
			shownum(){
				alert('ok');
			}

		}

		var a1=new Abc()
		a1.num();
		a1.shownum();
		alert(typeof Abc);//function

构造函数+原型 的继承

		function Person(name,age){
			this.name=name;
			this.age=age;
		}
		Person.prototype.showinfo=function(){
			return this.name+','+this.age;
		}
		//属性的继承
		function Student(name,age,sex){
			Person.apply(this,arguments);
			this.sex=sex;
		}
		for(var i in Person.prototype){
			Student.prototype[i]=Person.prototype[i];//方法的继承
		}
		var s1=new Student('zhangsan',100,'男');
		alert(s1.name);
		alert(s1.showinfo());

ES6 class 继承

		class Person{
			constructor(name,age){
				this.name=name;
				this.age=age;
			}
			showinfo(){
				return this.name+','+this.age;
			}
		}
		
		//super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。
		//第一种情况,super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。
		//只有调用super之后,才可以使用this关键字,否则会报错。这是因为子类实例的构建,基于父类实例,只有super方法才能调用父类实例。
		//第二种情况,super作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。
		
		class Student extends Person{
			constructor(name,age,sex){
				super(name,age);//继承属性和方法
				this.sex=sex;
			}
			showinfo1(){
				return super.showinfo()+'我是'+this.sex+'的';
			}
		}

		var s1=new Student('zhangsan123',100,'男');
		alert(s1.name);//zhangsan123
		alert(s1.showinfo1());//zhangsan123,100 我是男的

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值