JavaScript 原型<二>
js中的类是如何实现?
1.js最早使用 构造函数 去模拟类, 关于class的语法是后续推出的
2.对象拥有属性和方法,类是对象的集合
3.继承的方式:原型链继承
4.call()
、apply()
的使用
原型链继承
- 先定义两个函数:一个Father、一个Son
- 让Son继承Father,这样Son就具备Father的属性和方法
function Father(x, y, z) {
this.x = x
this.y = y
this.z = z
this.doWay = function () {
console.log(`this x`, this.x)
}
}
function Son(x, y, z) {
Father.call(this, x, z, y) //改变this指向 为当前Son
Father.apply(this, [x, y, z]) //同理
}
//原型链继承
Son.prototype = new Father()
//实例化类Son
let xiaoming = new Son('测试1', '测试2', '测试3')
xiaoming.doWay()
两个关键名词登场 call()
和 apply()
Q1:是什么?
A1: 改变this关键词 指向
Q2:做什么?
A2:call()/apply()的使用 是为了允许用户可提供改变属性