當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JS原型概念讲解
1.對象中存儲屬性的區域實際有兩個
- 對象自身
--比如直接通過對象所添加的屬性--在類中通過x = y 的形式添加的屬性,位于對象自身中- 原型中存儲
--對象中還有一些內容,會存儲到其他對象中(原型對象)--在對象中會有一個屬性用來存儲原型對象,這個屬性叫做__proto__--原型對象也負責為對象存儲屬性當我們訪問對象中的屬性時,會優先訪問對象自身的屬性對象自身不包含該屬性時,才會去原型對象中尋找 --會添加到原型對象中的情況:1.在類中通過xxx() {} 方式添加的方法,位于原型中2.主動向原型中添加的屬性或方法例子:
class Person {name = "孫悟空"age = 18sayHello() {console.log("我是", this.name)}}const per = new Person()console.log(per)按道理,應該輸入一個包含sayHello的對象,但是實際上
sayHello方法并不是在age和name一層級,而是在Prototype中。
這就是一個叫做原型的地方存儲著。
2.如何訪問一個對象的原型呢?兩種方式
class Person {name = "孫悟空"age = 18sayHello() {console.log("我是", this.name)}}const per = new Person()console.log(per)console.log(per.__proto__)console.log(Object.getPrototypeOf(per))3.原型對象中的數據:
-
1.對象中的數據(屬性、方法等)
-
2.constructor (對象的構造方法)
注意:
原型對象也有原型,這樣就構成了一條原型鏈,根據對象的復雜程度不同,原型鏈的長度也不同,比如
可以看出構成了原型鏈。
總結:
原型鏈:
讀取對象屬性時,會優先對象自身屬性,
如果對象中有,則使用,沒有則去對象的原型中尋找
如果原型中有,則使用,沒有則去原型的原型中尋找
知道找到Object對象的原型,Object的原型沒有原型(為null)
原型的作用:
原型就相當于一個公共的區域,可以被所有該類實例訪問,
可以將一個該類實例中,所有的公共屬性(方法)統一存儲到原型中
這樣我們只需要創建一個屬性,即可被所有實例訪問
JS中繼承就是通過原型來實現的,
當繼承時,子類的原型就是一個父類的實例
總結
- 上一篇: 干货 | 支持10X增长,携程机票订单库
- 下一篇: GAN 对抗生成网络代码实现