原型类似于公共的方法和属性,相同的方法和属性不用反复创建,提高代码的复用和体积。那我们如何使用在本对象中原型上的属性和方法呢,答案是通过原型的继承来实现。原型的继承和改变原型是两个不一样的东西。谨记
function Title(){}Title.prototype.show = function(){console.log("Title prototype: show")}function Article(){}Article.prototype = Title.prototypeArticle.prototype.constructor = Articlelet 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})}
