目录
使用class实现继承
类的演示
// 使用class实现继承
// 定义一个Student类,在Student里面定义一个构造函数,接受name和score
class Student {
constructor(name,score){
// 这里的this是 通过student这个类 创建出来的实例
this.name=name;
this.score=score;
}
}
const student = new Student('张三','90');
console.log("student",student)
定义方法
定义另一个类
提取两个类的共同属性,使用继承的概念
extends关键字和super关键字实现
new出来的Teacher是构造函数
teacher是实例,通过new关键字 继承Teacher的属性
原型链查找规则:先从当前的实例属性去查找,如果找到就返回,没找到就顺着原型链一层一层往上找,直到找到null为止,如果null都没有找到就会报错
原型prototype
prototype:函数的一个属性,就是一个对象(原型是函数特有的属性,对象和数组没有原型)
_proto_ ([[prototype]]):对象Object的一个属性,也是一个对象(对象数组都有原型链)
被构造的实例 的 原型链_proto_ 指向的是 构造他的函数 的 原型prototype
对象的_proto_保存着该对象的构造函数的prototype
原型链
就是 一个对象(teacher)为基准 以 _proto_为连接的链条 直到Object.prototype为止 这个链 叫做原型链
实际上是对象原型 _proto_为节点 连起来的一个链
原型继承
沿着_proto_去找链上任意一个原型属性,里面只要有想要的值,就去拿
如果找不到直接的属性或者方法,会以_proto_为节点,在构造函数prototype中找
下面的不重要
显式原型 隐式原型
原型链_proto_
展开对象
当执行teacher的drink方法时,在Teacher的prototype上找不到drink。
当访问一个对象的属性或者方法的时候,首先会从自身找,找不到,往他的原型上找,原型上找不到,往原型的原型上找,这种链式结构称为原型链
检测属性或方法是不是对象自己的
找自身的私有属性
X.hasOwnProperty('属性')
实际上完整的原型链