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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript_原型链继承

發(fā)布時間:2024/3/13 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript_原型链继承 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.原型鏈繼承

<script type="text/javascript">function Supper() {this.supProp = "Supper"}Supper.prototype.showSupperProp = function () {console.log(this.supProp)}function Sub() {this.subProp = "Sub"}Sub.prototype.showSubProp = function () {console.log(this.subProp)}//子類的原型等于父類的實例對象//想看到誰的實例的方法就等于誰的實例//以前是Sub.prototype = new Object() /{}Sub.prototype = new Supper()//讓子類型的原型的contructor指向子類型Sub.prototype.constructor = Subvar s = new Sub()s.showSupperProp() </script>


下面的圖為內(nèi)存的圖
Supper和Sub都創(chuàng)造了其函數(shù)對象和對應(yīng)的實例對象Object,由于

Sub.prototype = new Supper()

這句話即創(chuàng)造了Supper的實例對象也使得Sub的函數(shù)對象指向了Supper的實例對象,然后原來Sub函數(shù)對象指向的Object實例對象就成了廢棄的。

下面的

Sub.prototype.constructor = Sub

是為了使得子類型的原型的contructor指向子類型
不然就會引發(fā)一些不必要的錯誤

2.借用構(gòu)造函數(shù)繼承

這是假的繼承,其實沒有繼承,只是為了獲取其屬性

function person(name, age) {this.name = namethis.age = age}function student(name, age, price) {person.call(this, name, age)this.price = price}//無繼承var s = new student("tom", 22, 100)console.log(s.name, s.age, s.price)

通過call的方法獲取其屬性
但是實際上沒有發(fā)生繼承關(guān)系

3.組合繼承

組合繼承就是結(jié)合了上面兩個繼承

function person(name, age) {this.name = namethis.age = age}person.prototype.setName = function (name) {this.name = name}function student(name, age, price) {person.call(this, name, age)//為了得到屬性this.price = price}student.prototype = new person()//為了看到父類型的方法student.prototype.constructor = studentstudent.prototype.setPrice = function (price) {this.price = price}

既獲取了其中的屬性又發(fā)生了繼承。
所以組合繼承為最妙的一種繼承關(guān)系

總結(jié)

以上是生活随笔為你收集整理的JavaScript_原型链继承的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。