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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

JS原型概念讲解

發(fā)布時(shí)間:2024/3/26 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS原型概念讲解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.對(duì)象中存儲(chǔ)屬性的區(qū)域?qū)嶋H有兩個(gè)

- 對(duì)象自身

--比如直接通過(guò)對(duì)象所添加的屬性--在類中通過(guò)x = y 的形式添加的屬性,位于對(duì)象自身中

- 原型中存儲(chǔ)

--對(duì)象中還有一些內(nèi)容,會(huì)存儲(chǔ)到其他對(duì)象中(原型對(duì)象)--在對(duì)象中會(huì)有一個(gè)屬性用來(lái)存儲(chǔ)原型對(duì)象,這個(gè)屬性叫做__proto__--原型對(duì)象也負(fù)責(zé)為對(duì)象存儲(chǔ)屬性當(dāng)我們?cè)L問(wèn)對(duì)象中的屬性時(shí),會(huì)優(yōu)先訪問(wèn)對(duì)象自身的屬性對(duì)象自身不包含該屬性時(shí),才會(huì)去原型對(duì)象中尋找 --會(huì)添加到原型對(duì)象中的情況:1.在類中通過(guò)xxx() {} 方式添加的方法,位于原型中2.主動(dòng)向原型中添加的屬性或方法

例子:

class Person {name = "孫悟空"age = 18sayHello() {console.log("我是", this.name)}}const per = new Person()console.log(per)

按道理,應(yīng)該輸入一個(gè)包含sayHello的對(duì)象,但是實(shí)際上


sayHello方法并不是在age和name一層級(jí),而是在Prototype中。
這就是一個(gè)叫做原型的地方存儲(chǔ)著。

2.如何訪問(wèn)一個(gè)對(duì)象的原型呢?兩種方式

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.原型對(duì)象中的數(shù)據(jù):

  • 1.對(duì)象中的數(shù)據(jù)(屬性、方法等)

  • 2.constructor (對(duì)象的構(gòu)造方法)

注意:
原型對(duì)象也有原型,這樣就構(gòu)成了一條原型鏈,根據(jù)對(duì)象的復(fù)雜程度不同,原型鏈的長(zhǎng)度也不同,比如

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__)


可以看出構(gòu)成了原型鏈。

總結(jié):
原型鏈:
讀取對(duì)象屬性時(shí),會(huì)優(yōu)先對(duì)象自身屬性,
如果對(duì)象中有,則使用,沒(méi)有則去對(duì)象的原型中尋找
如果原型中有,則使用,沒(méi)有則去原型的原型中尋找
知道找到Object對(duì)象的原型,Object的原型沒(méi)有原型(為null)

原型的作用:
原型就相當(dāng)于一個(gè)公共的區(qū)域,可以被所有該類實(shí)例訪問(wèn),
可以將一個(gè)該類實(shí)例中,所有的公共屬性(方法)統(tǒng)一存儲(chǔ)到原型中
這樣我們只需要?jiǎng)?chuàng)建一個(gè)屬性,即可被所有實(shí)例訪問(wèn)
JS中繼承就是通過(guò)原型來(lái)實(shí)現(xiàn)的,
當(dāng)繼承時(shí),子類的原型就是一個(gè)父類的實(shí)例

總結(jié)

以上是生活随笔為你收集整理的JS原型概念讲解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。