今天面试被问到原型原型链说是说出来了,但是不知道其原理,很难受,问我工作中哪些地方用到了原型链?
原型链实现继承
1,私有属性继承
通过子类构造函数调用父类构造函数用call来改变this指向。
//子类
function studet(num,name){
peerson.call(this.name)
this.name=num
// 让子类构造函数调用父类并且用call改变父类this指向指向子类实例
}
//父类
function peerson(name){
this.name=name
}
2,公有方法
让子类的原型等于父类的实例。
function peerson(name,age){
this.name=name // 加工
}
//给人类添加一个公有方法speak让所有实例都可以访问speak
peerson。prototype.speak=function(){
console.log(this.name)
}
1:通过原型链继承setPrototype是一个变量
setPrototype.prototype=new personc()
2:组合继承
setPrototype=object.create(person.prototype)
3:寄生继承
fn.prototype=person.prototype
msg.prototype=new fn()
3,通过构造实例化对象需要填new
new做了什么事情?
1:让构造函数返回实例
2:让this指向实例
3:让实例默认继承类的原型
4,创建实例的构造函数首字母必须要大写
5,ES5继承
通过extend(c,p){}
6,js原型和原型链
1:JavaScript原型
js中每个函数都存在一个原型对象属性prototype,并且所有函数的默认原型都是object的实例。
2:JavaScript原型链
每个继承父类的子函数的对象都包含一个内部属性,__proto__该属性包含一个指针,指向父函数的
prototype若夫函数的原型链对象__proto__属性在上一层函数,在此过程就形成了原型链。