繼承
面向物件編程思想: 根據需求, 分析物件, 找到物件有什么特征和行為, 通過代碼的方式來實作需求, 要想實作這個需求,就要創建物件 ,要想創建物件, 就應該顯示有建構式, 然后通過建構式來創建物件, 通過物件呼叫屬性和方法來實作相應的功能及需求, 即可需注意
首先,JS不是一門面向物件的語言, JS是一門基于物件的語言, 那么為什么學習js還要學習面向物件, 因為面向物件的思想適合于人的想法, 編程起來會更加的方便,及后期的維護.... 面向物件的編程語言中有類(class)的概念(也是一種特殊的資料型別), 但是JS不是面向物件的語言, 所以, JS中沒有類(class), 但是JS可以模擬面向物件的思想編程, JS中會通過建構式來模擬類的概念(class)面向物件的特性:封裝,繼承,多型
封裝: 就是包裝
一個值存盤在一個變數中--封裝 一坨重復代碼放在一個函式中--封裝 一系列的屬性放在一個物件中--封裝 一些功能類似的函式(方法)放在一個物件中--封裝 好多相類似的物件放在一個js檔案中---封裝繼承:
首先繼承是一種關系,類(class)與類之間的關系, JS中沒有類, 但是可以通過建構式模擬類, 然后通過原型來實作繼承 繼承也是為了資料共享,js中的繼承也是為了實作資料共享 原型作用之一:資料共享,節省記憶體空間 原型作用之二:為了實作繼承 繼承是一種關系: 父類級別與子類級別的關系多型:
一個物件有不同的行為, 或者是同一個行為針對不同的物件, 產生不同的結果, 要想有多型, 就要先有繼承, js中可以模擬多型, 但是不會去使用, 也不會模擬繼承例子:
//例子: //人,都有姓名,性別,年齡, 吃飯, 睡覺, 玩 //學生,都有姓名,性別,年齡, 成績, 吃飯, 睡覺, 玩 ,學習的行為 //js中通過原型來實作繼承 function Person(name, age, sex) { this.name = name; this.sex = sex; this.age = age; } Person.prototype.eat = function () { console.log("人可以吃東西"); }; Person.prototype.sleep = function () { console.log("人在睡覺"); }; Person.prototype.play = function () { console.log("生活就是不一樣的玩法而已"); }; function Student(score) { this.score = score; } //改變學生的原型的指向即可==========>學生和人已經發生關系 Student.prototype = new Person("小明", 10, "男"); Student.prototype.study = function () { console.log("學習很累很累的哦."); }; //相同的代碼太多,造成了代碼的冗余(重復的代碼) var stu = new Student(100); console.log(stu.name); console.log(stu.age); console.log(stu.sex); stu.eat(); stu.play(); stu.sleep(); console.log("下面的是學生物件中自己有的"); console.log(stu.score); stu.study();
改變學生的原型的指向后==========>學生和人已經發生關系,產生原型鏈,則學生里面有人的屬性和方法以及自己的屬性和方法

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/157950.html
標籤:JavaScript
上一篇:JS高級---一個神奇的原型鏈
