【复习】javascript 类

类的本质 

类(class)的本质是function

类的所有方法都定义在类的prototype属性上

类创建的实例,里面的原型(__proto__)也指向类的原型对象(prototype)

ES6的类的绝大部分功能,ES5也能做到,新的class写法只是让对象原型的的写法更加的清晰,更像面向对象编程的语法

ES6的类其实就是语法糖(便捷写法)

 创建类 

class Star {
			//构造器
			constructor (uname, age, sex) {
				// uname姓名,age年龄,sex性别
				// 对象.属性 = '值';
				// 构造函数再new的时候,就会执行
				this.uname = uname;
				this.age = age;
				this.sex = sex;
				// 构造函数中的this指向当前对象
				console.log(this);
			}
           //给类添加方法
           tiao () {
				console.log('跳舞');
			}
		}

		// 对类实例化,就可以得到一个具体的对象
		var ldh = new Star('刘德华', 16, '男');
		console.log( ldh );
		// console.log( ldh );
		// console.log( ldh.uname );
		// console.log( ldh.age );
           //调用方法
           ldh.tiao(); 

		var zxx = new Star('周星驰', 19, '男');
		console.log(zxx);

 

 类的继承

 子类通过extends关键字来继承父类,super用来调用父类构造函数和普通函数

class Father {
			constructor (uname, age) {
				this.uname = uname;
				this.age = age;
			}
			qian () {
				console.log('赚他一个亿');
			}
		}


		// 类的继承
		class Son extends Father  {
			// 如果儿子需要有自己的属性(分数)
			constructor (uname, age, score) {
				// this.uname = uname;
				// this.age = age;
				// super用来调用父类的构造函数和普通函数
				super(uname, age);
				this.score = score;
			}

			qian () {
				// 普通函数,方法
				super.qian();
				console.log('两毛钱');
			}
		}

		// 实例化对象
		var obj = new Son('儿子', 6, 99);
		console.log( obj );
		obj.qian();

 

  this指向

  constructor(构造器)中的this指向当前实例对象

  方法中的this,指向的是调用者,即谁调用,指向谁

class Btn {
			constructor (id) {
				// this.uname = uname;
				this.btn = document.querySelector(id);
				// 点击调用say方法
				// 注意:因为这个方法点击之后才要调用,所以添加的时候不要带括号
				this.btn.onclick = this.say;
			}

			// 方法中的this:指向的是调用者
			say () {
				console.log(this);
			}
		}

		var o = new Btn('#d1');
		console.log( o );
		// 实例对象调用say方法:里面的this指向的是实例对象
		// 如果是按钮点击调用say方法:里面的this指向的是按钮
		o.say();

		// class Star {
		// 	// 构造函数中的this:this指向当前实例对象
		// 	constructor (uname, age) {
		// 		this.uname = uname;
		// 		this.age = age;
		// 		console.log(this);
		// 	}
		// 	// // 方法中的this
		// 	// say () {
		// 	// 	console.log(this);
		// 	// }
		// }

		// // 构造函数中的this
		// var obj = new Star('带土', 22);
		// console.log(obj);

		// var you = new Star('鼬', 19);
		// console.log(you);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值