javascript原型,继承

Posted carry-carry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript原型,继承相关的知识,希望对你有一定的参考价值。

//普通对象
//函数对象(有原型 prototy 的属性)
//原型的应用 继承
function Amial(){
    this.type = ‘小于‘
}
function cat(name){
    this.name = name
}
cat.prototype = new Amial()
var cat1 = new cat(‘小张‘)
console.log(cat1.name,cat1.type)

//构造器  继承 缺点:把父元素的属性都复制了
function Amial(){
    this.type = ‘动物‘
}
function amm(name){
    Amial.apply(this) //调用Amial构造器 Amial == amm
    //Amial.call(this,x,y,z)  Amial.apply(this,[x,y,z])
    this.name = name
}
var a = new amm(‘张三‘)
console.log(a.type)

//组合继承(原型+构造器) 缺点:调用两次父类构造器

function Preson(name){
    this.arr = [‘js‘,‘php]
    this.name = name
}
Preson.prototype.showname = function(){
    console.log(this.name)
}
function teacher(name,gread){
    Preson.call(this,name)
    this.gread = gread
}
teacher.prototype = new Preson() // 最关键的一句
var a = new teacher(‘xiaoming‘, 23)
console.log(a.arr,a.name,a.gread)
a.showname()

//原型+构造+寄生
function father(name){
    this.arr = [‘aa‘,‘bb‘]
    this.name = name
}
father.prototype.showname = function(){
   console.log(this.name)
}
function son(name,course){
   father.call(this,name)
   this.course = course
}
function extend(subobj,superobj){
   var proobj = Object.create(superobj.prototype)
   subobj.prototype = proobj
}
extend(son, father)
var a = new son(‘xiaoming‘, 23)
console.log(a.arr,a.name,a.course)
a.showname()

 

以上是关于javascript原型,继承的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 原型继承原型链

javascript_原型继承

javascript类继承系列二(原型链)

javascript继承详解

通过伪经典实例化 (JavaScript) 掌握原型继承

JavaScript 中原型继承的约定