日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS原型概念讲解

發布時間:2024/3/26 javascript 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 (對象的構造方法)

注意:
原型對象也有原型,這樣就構成了一條原型鏈,根據對象的復雜程度不同,原型鏈的長度也不同,比如

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))console.log(per.__proto__.__proto__)console.log(per.__proto__.__proto__.__proto__)


可以看出構成了原型鏈。

總結:
原型鏈:
讀取對象屬性時,會優先對象自身屬性,
如果對象中有,則使用,沒有則去對象的原型中尋找
如果原型中有,則使用,沒有則去原型的原型中尋找
知道找到Object對象的原型,Object的原型沒有原型(為null)

原型的作用:
原型就相當于一個公共的區域,可以被所有該類實例訪問,
可以將一個該類實例中,所有的公共屬性(方法)統一存儲到原型中
這樣我們只需要創建一個屬性,即可被所有實例訪問
JS中繼承就是通過原型來實現的,
當繼承時,子類的原型就是一個父類的實例

總結

以上是生活随笔為你收集整理的JS原型概念讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。