日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

读javascript高级程序设计06-面向对象之继承

發布時間:2025/5/22 javascript 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 读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-面向对象之继承的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。