一、原型繼承
缺點:1、不能給父級建構函式傳參
2、父級建構函式中引用型別的資料,會被自己建構函式例項共享
ps:這是下面例項中的2只貓,是不是萌萌噠!
這是小7
這是8哥
function二、借用建構函式繼承animal(name,age)
animal.prototype.say = function
() function
cat(color)
cat.prototype = new animal('八哥','1')
var cat1 = new cat('白色')
cat1.hobby.push('sleep')
var cat2 = new cat('花色')
console.log(111,cat1.say()) //
["music", "dance", "sleep"]
console.log(2222,cat2.say()) //
["music", "dance", "sleep"]
console.log(333,cat1.name) //
八哥console.log(444,cat1.age) //
1console.log(555,cat1.color) //
白色
缺點:無法繼承原型中的方法
function三、組合繼承animal(name)
animal.prototype.say = function
() function
cat(color,name)
var cat1 = new cat('白色','8哥')
cat1.hobby.push('sleep')
var cat2 = new cat('花色','小七')
//報錯 cat1.say is not a function
console.log(333,cat1.name) //
八哥console.log(444,cat1.color) //
白色console.log(555,cat2.name) //
小七console.log(666,cat2.color) //
花色
完美的解決了前面2種方式造成的缺陷,但是我們會發現建構函式的屬性會有冗餘
function四、公升級一下animal(name)
animal.prototype.say = function
() function
cat(color,name)
cat.prototype = new animal('66')
var cat1 = new cat('白色','8哥')
cat1.hobby.push('sleep')
var cat2 = new cat('花色','小七')
console.log(111,cat1.say()) //
["music", "dance", "sleep"]
console.log(222,cat2.say()) //
["music", "dance"]
console.log(333,cat1.name) //
八哥console.log(444,cat1.color) //
白色console.log(555,cat2.name) //
小七console.log(666,cat2.color) //
花色
function animal(name)
animal.prototype.say = function()
function cat(color,name)
cat.prototype = animal.prototype
var cat1 = new cat('白色','8哥')
console.log(111,cat1 instanceof cat)//true
console.log(222,cat1 instanceof animal)//true
console.log(333,cat1.constructor)//animal
我們會發現,判斷例項的建構函式列印出來的跟我們預期不符
優化function animal(name)
animal.prototype.say = function()
function cat(color,name)
cat.prototype = object.create(animal.prototype)
cat.prototype.constructor = cat
var cat1 = new cat('白色','8哥')
console.log(111,cat1 instanceof cat)//true
console.log(222,cat1 instanceof animal)//true
console.log(333,cat1.constructor)//cat
物件導向。物件的繼承
1.原型繼承 將父類的例項賦值給子類的原型 這就是原型繼承 將父類的私有和公有都繼承在子類的原型上,成為子類的公有屬性。2.call繼承 將父類私有的繼承為子類私有的 3.冒充物件繼承 將父類私有的和公有的都繼承為子類私有的 4.混合繼承 私有的繼承為私有的,公有的和私有的再次繼承為公有的 混合繼承...
物件導向的繼承(拷貝繼承)
在原有物件的基礎上,稍微修改後得到新的物件 不會影響原物件的功能 子類不影響父類,子類可以繼承父類的一些功能 呼叫父類的建構函式,使用call方法改變this指向問題。for in 拷貝繼承 extend function createperson name,createperson.prototy...
物件導向的 繼承
1 什麼是繼承 繼承是一種新建類的方式,新建的類稱之為子類,被繼承的類稱之為基類 父類 超類 繼承描述的是一種 遺傳 的關係 子類可以重用父類的屬性 在python中的繼承注意兩點 1.在python中支援乙個子類同時繼承多個父類,2.python中類分為兩種 新式類 但凡繼承object的類,以及...