浅谈原型式继续、借助组织函数、组合体式格局继续

原型式继续

原型式继续,就是肯定一个函数,该函数中建立一个暂时性的组织函数,将作为参数,传入的对象作为这个组织函数的原型,末了返回这个组织函数的实例对象

/*定义函数:用于完成对象之间的继续
    参数:
    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);
    原文作者:庄国琳
    原文地址: https://segmentfault.com/a/1190000016072955
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞