物件導向程式設計思想: 根據需求, 分析物件, 找到物件有什麼特徵和行為, 通過**的方式來實現需求, 要想實現這個需求,就要建立物件 ,要想建立物件, 就應該顯示有建構函式, 然後通過建構函式來建立物件, 通過物件呼叫屬性和方法來實現相應的功能及需求, 即可
首先,js不是一門物件導向的語言, js是一門基於物件的語言, 那麼為什麼學習js還要學習物件導向, 因為物件導向的思想適合於人的想法, 程式設計起來會更加的方便,及後期的維護....
物件導向的程式語言中有類(class)的概念(也是一種特殊的資料型別), 但是js不是物件導向的語言, 所以, js中沒有類(class), 但是js可以模擬物件導向的思想程式設計, js中會通過建構函式來模擬類的概念(class)
乙個值儲存在乙個變數中--封裝
一坨重複**放在乙個函式中--封裝
一系列的屬性放在乙個物件中--封裝
一些功能類似的函式(方法)放在乙個物件中--封裝
好多相類似的物件放在乙個js檔案中---封裝
首先繼承是一種關係,類(class)與類之間的關係, js中沒有類, 但是可以通過建構函式模擬類, 然後通過原型來實現繼承
繼承也是為了資料共享,js中的繼承也是為了實現資料共享
原型作用之一:資料共享,節省記憶體空間
原型作用之二:為了實現繼承
繼承是一種關係:
父類級別與子類級別的關係
乙個物件有不同的行為, 或者是同乙個行為針對不同的物件, 產生不同的結果, 要想有多型, 就要先有繼承, js中可以模擬多型, 但是不會去使用, 也不會模擬
//例子://
人,都有姓名,性別,年齡, 吃飯, 睡覺, 玩
//學生,都有姓名,性別,年齡, 成績, 吃飯, 睡覺, 玩 ,學習的行為
//js中通過原型來實現繼承
function
person(name, age, ***)
person.prototype.eat = function
() ;
person.prototype.sleep = function
() ;
person.prototype.play = function
() ;
function
student(score)
//改變學生的原型的指向即可**********>學生和人已經發生關係
student.prototype = new person("小明", 10, "男");
student.prototype.study = function
() ;
//相同的**太多,造成了**的冗餘(重複的**)
var stu = new student(100);
console.log(stu.name);
console.log(stu.age);
console.log(stu.***);
stu.eat();
stu.play();
stu.sleep();
console.log("下面的是學生物件中自己有的");
console.log(stu.score);
stu.study();
改變學生的原型的指向後**********>學生和人已經發生關係,產生原型鏈,則學生裡面有人的屬性和方法以及自己的屬性和方法
js高階繼承
面試常見題 在es6之前如果要繼承該如何實現?原型繼承 proto 原型的位址 如何實現原型繼承 1.更改子類的原型指向父類的乙個例項物件。語法 子類.protype new 父類 例如 student.protype new person 2.再給子類的原型設定乙個contructor指向子類 保...
js繼承 來自js高階
繼承 組合繼承 原型繼承與借用建構函式 用建構函式實現對例項屬性的繼承,用原型鏈實現對原型屬性和方法的繼承 function super name super.prototype.sayname function function sub name,age sub.prototype new sup...
js高階 原型鏈繼承
實現繼承方式1 套路 1,定義父型別建構函式。2,給父型別的原型新增方法。3,定義子型別的建構函式。4,建立父型別的物件賦值給子型別的原型。5,將子類原型的構造屬性設定為子型別。6,給子型別原型新增方法 7,建立子型別的物件 可以呼叫父型別的方法 關鍵 子型別的原型為父型別的乙個例項物件。實際上是子...