當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
读javascript高级程序设计06-面向对象之继承
生活随笔
收集整理的這篇文章主要介紹了
读javascript高级程序设计06-面向对象之继承
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原型鏈是實現繼承的主要方法,通過原型能讓一個引用類型繼承另一個引用類型。
1.原型鏈實現繼承
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注意:在使用原型鏈實現繼承時,不能用對象字面量方法創建原型方法。
2.借用構造函數
在子類型構造函數內部調用超類型的構造函數。
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.組合繼承--原型鏈結合借用構造函數
使用原型鏈實現對原型對象屬性和方法的繼承,使用構造函數實現對實例對象屬性的繼承。
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);////第二次調用Person()this.age=age; } Student.prototype=new Person();//第一次調用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]組合繼承是很常用的繼承方式,但是它也有個缺點,就是需要調用兩次超類型的構造函數。
*4.寄生式組合式繼承
寄生組合式繼承:借用構造函數繼承屬性,使用原型鏈的混合型式繼承方法。寄生組合式是實現繼承的最佳方式。
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總結
以上是生活随笔為你收集整理的读javascript高级程序设计06-面向对象之继承的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一步步编写操作系统(1)
- 下一篇: gradle idea java ssm