JS繼承

一個對象直接使用另外一個對象的屬性和方法。
如何實現(xiàn)?
得到一個類的屬性,得到一個類的方法。
比如,寫個人的函數(shù),再寫個男人的函數(shù),女人的函數(shù),男人也是人啊,必須要可以使用人的方法屬性的。再有,如果人突變了,身高變了,那男人女人都要變吧。這就是繼承的意思,又可以省代碼,還可以把共性統(tǒng)一管理。


function person(name,sex){
  this.name = name
  this.sex = sex
}
person.prototype.say = function(){
  console.log(this.name)
}
function man(){
  this.age = age
} 
man.prototype.say = function(){
  console.log(this.age)
}

屬性獲取

function man(name,sex,age){
  person.call(this,name,sex)
  this.age = age   //屬性的this,需要new的時候,才可以被使用賦值的。
} 

方法獲取

先說思路,只要讓自己的prototype里面有person的prototype的內(nèi)容就行了,方法很多。
先引入一個方法叫Object.create()


它能把對象放到一個空對象的proto里。

man.prototype===Object.create(person.prototype)) //設(shè)置它的方法庫指向person的方法庫

可以直接寫成一個萬能函數(shù):

function get(newobj,oldobj){
  var proto = Object.create(oldobj.prototype)
  proto.constructor = newobj
  newobj.prorotype = proto
}

完整代碼,注意順序!

function person(name,sex){
  this.name = name
  this.sex = sex
}
person.prototype.say = function(){
  console.log(this.name)
}
function man(name,sex,age){
  person.call(this,name,sex)
  this.age = age
} 

man.prototype = Object.create(person.prototype)
man.prototype.saysex = function(){
  console.log(this.sex)
}

var ha = new man('haha','male',26)
ha.saysex()
ha.say()


先把原型賦值,然后再去新增。
還有一個缺點,賦值的那個對象,只有proto,少了constructor,這個屬性應(yīng)該指向自己的。
如果不用ES5呢?
屬性那步不變的。
方法上,不用Object.create,,,
new person???

man.prototype = new person
man.prototype.constructor = man

如圖

hasOwnPrototype

有木有自身屬性,而不是繼承得來的的?



報錯的那個,是因為它是最后一代了,沒做過父母,還木有prototype呢。不能再犯錯了哦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 開山例子 需求:學(xué)生交學(xué)費,中學(xué)生打8折;小學(xué)生打5折,然后通過打印的方法,顯示學(xué)生的名字、年齡記應(yīng)繳學(xué)費。 我們...
    jayafs閱讀 597評論 0 50
  • 問題1: apply、call 、bind有什么作用,什么區(qū)別 apply/call/bind 問題2: 以下代碼...
    DCbryant閱讀 327評論 0 0
  • 原文鏈接 js的繼承有6種方式,大致總結(jié)一下它們各自的優(yōu)缺點,以及它們之間的關(guān)系。 1.原型鏈 js的繼承機制不同...
    空_城__閱讀 835評論 0 11
  • 月圓是想念、是思念、是祈盼、是幸福、是團圓。沒有昂貴的月餅給大家,只是以文表達思與念,愿各自安好,千里共嬋娟。 中...
    小小sha閱讀 327評論 0 2
  • 轉(zhuǎn)動命運輪盤的手似乎來自四面八方,比如性格,比如思維,比如眼界。 朱月,是演藝圈眾星捧月的女主。 ...
    butnot閱讀 192評論 0 0

友情鏈接更多精彩內(nèi)容