原型类似于公共的方法和属性,相同的方法和属性不用反复创建,提高代码的复用和体积。那我们如何使用在本对象中原型上的属性和方法呢,答案是通过原型的继承来实现。原型的继承和改变原型是两个不一样的东西。谨记
function Title(){}
Title.prototype.show = function(){
console.log("Title prototype: show")
}
function Article(){}
Article.prototype = Title.prototype
Article.prototype.constructor = Article
let hd = new Article()
hd.show()//通过原型的继承来实现代码的复用
console.dir(Article)
完整版继承
function Title(name){
this.host = name
}
function Article(name){
Title.call(this,name)
}
Article.prototype = Object.create(Title.prototype,{
"constructor":{
value:Article,
enumerable:false
}
})
let hd = new Article("jack")
console.dir(hd.host)
对象工厂封装继承
function extend(sub,sup){
sub.prototype = Object.create(sup.prototype)
//或者使用setprototypeof来设置原型
Object.defineProperty(sub.prototype,"constructor",{
value:sub,
enumerable:false
})
}