前端的几种继承

function sort (arr){
var length = arr.length
for (var i =0; i <length - 1; i++){
for (var j= 0 ; j<length- 1 - i; j ++){
if (arr[j] > arr[j +1]){
var temp =arr[j]
arr[j] = arr[j+1];
arr[j+1] =temp ;

}

}
}

return arr

}
冒泡排序
面向对象 封装 继承 多态
封装
继承
1原型链继承
function fz(){
this.name ='gao'
this.son =function (){ return this.name+'ze'}
}
fz.prototype.age ='26'

function son (){
this.name ='li'
}
son.prototype = new fz();
var sonli = new son();

fz {name: "gao", son: ƒ}
sonli.age//"26"
fz.prototype.age ='260'//"260"
sonli.age//"260"
var son2 =new fz()
son2.age//"260"
sonli.name//"li"
sonli.son()
2. 构造函数继承
function fz(name){
this.name =name
this.son =function (){ return this.name+'ze'}
}
fz.prototype.age ='26'
//可传参
function sonz(){
fz.call(this,'zhang')
}
var sonz=new sonz()
sonz.name //zhang
sonz.age //undefind
sonz.son()//"zhangze"
//可传参
3 组合继承
function fz(name){
this.name =name
this.son =function (){ return this.name+'ze'}
}
fz.prototype.age ='26'
function sonz(name){
fz.call(this,name)
}
sonz.prototype = new fz();
var sub = new sonz('zhang')
4 寄生组合继承
function fz(name){
this.name =name
this.son =function (){ return this.name+'ze'}
}
fz.prototype.age ='26'
function jsjc (obj){
function F(){};
F.prototype = obj;
return new F();
}
var jsZh=jsjc(fz.prototype); //继承父级元素的原型 (属性方法去使用构造函数继承)
function son (name){
fz.call(this,name)
}
son.prototype=jsZh;
jsZh.constructor = son;//
var son1 =new son('lk');
son1.name;
son1.age;

猜你喜欢

转载自www.cnblogs.com/gaozexiong/p/12710344.html