當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
读javascript高级程序设计06-面向对象之继承
生活随笔
收集整理的這篇文章主要介紹了
读javascript高级程序设计06-面向对象之继承
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原型鏈?zhǔn)菍?shí)現(xiàn)繼承的主要方法,通過(guò)原型能讓一個(gè)引用類型繼承另一個(gè)引用類型。
1.原型鏈實(shí)現(xiàn)繼承
function SuperType(){ this.superprop=1; } SuperType.prototype={showSuperprop:function(){console.log(this.superprop);} } function SubType(){ this.subprop=2; } SubType.prototype=new SuperType(); SubType.prototype.showSubprop=function(){console.log(this.subprop); } var s=new SuperType(); s.showSuperprop();//1 var s2=new SubType(); s2.showSuperprop();//1 s2.showSubprop();//2注意:在使用原型鏈實(shí)現(xiàn)繼承時(shí),不能用對(duì)象字面量方法創(chuàng)建原型方法。
2.借用構(gòu)造函數(shù)
在子類型構(gòu)造函數(shù)內(nèi)部調(diào)用超類型的構(gòu)造函數(shù)。
function SuperType(){ this.numbers=[1,2,3]; } function SubType(){ SuperType.apply(this); } var s=new SubType(); s.numbers.push(4); console.log(s.numbers);//1,2,3,4 var s1=new SubType(); console.log(s1.numbers);//1,2,3* 3.組合繼承--原型鏈結(jié)合借用構(gòu)造函數(shù)
使用原型鏈實(shí)現(xiàn)對(duì)原型對(duì)象屬性和方法的繼承,使用構(gòu)造函數(shù)實(shí)現(xiàn)對(duì)實(shí)例對(duì)象屬性的繼承。
function Person(name){this.name=name;this.numbers=[1,2,3]; } Person.prototype.sayName=function(){console.log(this.name); } function Student(name,age){Person.call(this,name);////第二次調(diào)用Person()this.age=age; } Student.prototype=new Person();//第一次調(diào)用Person() Student.prototype.sayAge=function(){console.log(this.age); } var s=new Student('小張',15); s.sayName();//小張 s.sayAge();//15 s.numbers.push(5); console.log(s.numbers);//[1, 2, 3, 5] var s1=new Student('小蘭',14); s1.sayName();//小蘭 s1.sayAge();//14 console.log(s1.numbers);//[1, 2, 3]組合繼承是很常用的繼承方式,但是它也有個(gè)缺點(diǎn),就是需要調(diào)用兩次超類型的構(gòu)造函數(shù)。
*4.寄生式組合式繼承
寄生組合式繼承:借用構(gòu)造函數(shù)繼承屬性,使用原型鏈的混合型式繼承方法。寄生組合式是實(shí)現(xiàn)繼承的最佳方式。
function object(o) {function F() {}F.prototype = o;return new F(); } function inheritPrototype(superType, subType) {var prototype = object(superType.prototype);prototype.constructor = subType;subType.prototype = prototype; } function superType(name) {this.name = name; } superType.prototype.sayName = function () {console.log('my name is ' + this.name); } function subType(name, age) {superType.call(this, name);this.age = age; } inheritPrototype(superType, subType); subType.prototype.sayAge = function () {console.log('my age is ' + this.age); } var s=new superType('Cathy'); s.sayName();//my name is Cathy var s1 = new subType('Tom', 18); s1.sayName();//my name is Tom s1.sayAge();//my age is 18總結(jié)
以上是生活随笔為你收集整理的读javascript高级程序设计06-面向对象之继承的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一步步编写操作系统(1)
- 下一篇: HttpContext.Current: