js 本身是基於物件導向開發的語言
=> 封裝 繼承 多型
封裝: 類也是乙個函式,把實現乙個**的功能進行封裝,以此實現 低耦合高內聚
多型: 過載 重寫
重寫:子類重寫父類上的方法
過載:相同的方法,由於引數或者返回值不同,具備了不同的功能。
js中的過載:同乙個方法內,根據傳參不同實現不同的功能
繼承:子類繼承父類中的方法
讓子類的例項也具備父類中私有屬性和公共方法(讓子類的原型等於父類的例項即可)
現在來看乙個例子
1.父類中私有和公有的屬性方法,最後都變為子類例項公有的。
2.原型鏈繼承並不會把父類的屬性方法『拷貝』給子類,而是讓子類基於__proto__原型鏈找到自己定義的屬性和方法。
** 注意:**進行修改的話,會使父類的屬性和方法也會進行修改。這樣不僅會影響其他父類的例項,也影響其他子類的例項
**
// 繼承的目的 讓子類的例項也具備父類中私有屬性和公共方法
function parent()
parent.prototype.getx = function getx()
function child()
// 第一種方法:原型繼承(讓子類的原型等於父類的例項即可)
child.prototype = new parent //=> 原型繼承
child.prototype.constructor = child;
child.prototype.gety = function gety ()
let c1 = new child()
// 現在c1 只能用y 和gety,但是我們也想讓c1繼承parent的方法和屬性
console.log(c1,'c1')
console.log(c1.__proto__)
console.log(c1.__proto__.__proto__.getx)
(只能繼承父類中私有的,不能繼承父類中公有的)
**
// 第二種繼承方式:call繼承(只能繼承父類中私有的,不能繼承父類中公有的)
function parent()
parent.prototype.getx = function getx()
function child()
child.prototype.gety = function gety()
let c2 = new child()
// 現在c2 只能用y 和gety,但是我們也想讓c1繼承parent的方法和屬性
// 第一種 用__proto__ 的方式,把child的prototype.__proto__強制改為parent.prototype
// child.prototype.__proto__ = parent.prototype
// 第二種 使用object.create 也是讓子類的例項指向父類的原型
child.prototype = object.create(parent.prototype)
// 這種建立方式 會丟失constructor 我們手動給加乙個
child.prototype.constructor = child;
child.prototype.gety = function gety ()
let c3 = new child()
// 現在c2 只能用y 和gety,但是我們也想讓c1繼承parent的方法和屬性
}//繼承 extends paren
//注意:繼承後一定要在constructor第一行加super
class child1 extends parent1
getx()
}let c4 = new child1;
console.log(c4,'c4')
JS 繼承的四種方式
js 本身是基於物件導向開發的程式語言。類 封裝 繼承 多型 繼承機制使得不同的例項可以共享建構函式的原型物件的屬性和方法 以下情況都是 b 為子類,a 為父類 基本思想是利用原型讓乙個引用型別繼承另乙個引用型別的屬性和方法。我們知道每個建構函式都有乙個原型物件 prototype 原型物件都包含乙...
js繼承的四種實現方式
一 原型鏈繼承 核心 將父類的例項作為子類的原型。宣告乙個動物的類 function animal name animal.prototype.公 父類新增原型方法 原型屬性,子類都能訪問到 animal.prototype.age 3 animal.prototype.sleep function...
JavaScript四種繼承方式
原型繼承 function person name,age person.prototype.say function function man man.prototype new person 霍頓 22 這句是重點,敲黑板 var man1 new man man1.say var man2 n...