JS(JavaScript)

一.继承
1.原型式继承
定义临时构造函数,作为参数传入对象作为着构造函数原型,并最后返回该构造函数的实例对象

function Fun(obj,poap) {
    function Fun() {
        //定义一个临时构造函数
        for(var attrNome in porp){
           //遍历对象属性和方法
           this[attrNome] = porp[attrNome]
        }
    }
    Fun.prototype = obj;
    //将函数参数作为函数的原型
    return new Fun();
    //    姜构造函数创造的对象进行返回
}
var obj = {
    name : '犬夜叉'
}
var result = fn(obj,{
    age : 16,
    sayMe : function () {
        console.log('you my function')
    }
});
console.log(result.age);
result.sayMe();

2.借助构造函数
无论是原型链还是原型式继承,都有相同的问题,可借助构造函数
子对象构造函数种调用父对象构造函数,可通过调用
apply()和call()方法实现
apply()和cal()方法都准许传递对象this,可实现子对象构造函数种调用父对象构造函数时,将子对象this和父对象this捆绑在一起

function Parent() {
//定义父级对象的构造函数
    this.parent = 'parent';
}
function call() {
//定义子级对象构造函数-使用apply()或call()方法
    Parent.call(this);
    this.child = 'child';
}
var child = new Child();
console.log(child);

3.组合方式继承
也叫为经典继承,将原型链或原型式继承和借助构造函数技术组合在一起,引发其两种函数的一种继承方式

  • 使用原型链和原型式继承实现对原型属性和方法继承
  • 通过借助构造函数实现对实例对象属性的继承
function Parent() {
    this.name = '犬夜叉'
//    构造函数点1自有属性
}

Parent.prototype.age = 16;
//构造函数的原型属性

function child() {
    parent.call();
    //继承父级构造函数中自有属性
    this.job = '妖狐'
}
Child.prototype = parent.prototype;

var child = new Child();

console.log(child.job);
console.log(child.age);
console.log(child.name);

佐珥玎
41 声望8 粉丝