原型式继续
原型式继续,就是肯定一个函数,该函数中建立一个暂时性的组织函数,将作为参数,传入的对象作为这个组织函数的原型,末了返回这个组织函数的实例对象
/*定义函数:用于完成对象之间的继续
参数:
obj:示意继续关联中的父级对象
prop:对象花样,示意继续关联中的子级对象的属性和要领
*/
function fn(obj,porp){
//定义一个暂时的组织函数
function Fun(){
//遍历对象的属性和要领
for(var attrName in porp){
this[attrName]=porp[attrName];
}
}
//将函数的参数作为组织函数的原型
Fun.prototype=obj;
//将组织函数建立的对象举行返回
return new Fun();
}
var obj={
name:'前端'
}
//挪用函数
var result=fn(obj,{
age:20,
sayMe:function(){
console.log('this is function');
}
});
console.log(result.age);
result.sayMe();
应用Object.create()要领完成继续
var obj={
name:'前端'
}
var newObj=object.create(obj,{
age:{
value:20
},
sayMe:{
value:function(){
console.log('this is function');
}
}
});
console.log(newObj.age);
newObj.sayMe();
借助组织函数
无论是原型链照样原型式继续,都具有雷同的题目。想要处理如许的题目的话,能够借助组织函数(也能够叫做捏造对象或典范继续)。
这类体式格局完成异常简朴,就是在子对象的组织函数中挪用父对象的组织函数。详细能够经由过程挪用apply()和call()要领完成。
apply()和call()要领都许可通报指定某个对象的this。关于继续来说,能够完成在子对象的组织函数中挪用父对象的组织函数时,将子对象的this和父对象的this绑定在一起
//定义父级对象的组织函数
function Parent(){
this.parent='parent';
}
//定义子级对象的组织函数
function child(){
//挪用父级对象的组织函数:运用apply()或call()要领
Parent.call(this);
this.child='child';
}
//建立子级对象
var child=new Child();
console.log(child);
组合体式格局继续
组合继续,也叫做伪典范继续,指的是将原型链或原型式继续和借助组织函数的手艺组合在一起,发挥两者优点的一种继续体式格局
详细完成的思绪就是:
- 运用原型链或原型式继续完成对原型的属性和要领的继续。
- 经由过程借助组织函数完成对实例对象的属性的继续
如许,既经由过程在原型上定义要领完成了函数的重用,又能够保证每一个对象都有本身的专有属性
function Parent(){
//组织函数的自有属性
this.name='前端';
}
//组织函数的原型属性
Parent.prototype.age=20;
function Child(){
//继续父级组织函数中的自有属性
Parent.call(this);
this.job='IT';
}
//继续父级组织函数中的原型属性
Child.prototype=Parent.prototype;
var child=new Child();
console.log(child.job);
console.log(child.age);
console.log(child.name);