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

歡迎訪問 生活随笔!

生活随笔

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

javascript

JS / 原型对象

發布時間:2023/12/20 javascript 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS / 原型对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原型prototype

我們所創建的每一個函數,解析器都會向函數中添加一個屬性prototype、

? ? ? ? - 每個函數的原型對象prototype是不相等的

? ? ? ? - 如果函數作為普通函數調用prototype沒有任何作用

? ? ? ? - 當函數作為構造函數調用prototype:

通過構造函數創建的對象有一個隱含屬性指向構造函數的prototype原型對象。

prototype無法輕易訪問

訪問方法:

function MyClass(){}

var mc=new MyClass()

console.log(mc.__proto__==MyClass.prototype)

兩條下劃線proto兩條下劃線

? ? ? ? - 原型對象就相當于一個公共的區域,所有同一個類的實例,都可以訪問到這個原型對象,可以將對象中共有的內容,同一設置到原型對象中

MyClass.prototype.a=123;

?當我們訪問一個對象的屬性或方法時,會在它的自身先去找,如果有則直接使用,如果沒有則會去原型對象中尋找,如果找到則直接使用。

可以通過mc.a來訪問到MyClass的原型函數中的a

如果mc.a=“456”

mc.a=456 ,該a為mc里的a 不會修改原型對象中的a

- 創建構造函數時,可以將這些對象共有的屬性和方法統一添加到構造函數的原型對象中,這樣不用分別為每一個對象添加,也不會影響到全局作用域,就可以使每個對象都具有這些屬性和方法

- 當用in檢查一個對象是否含有某個屬性值的時候,如果對象沒有但是原型中有,也會返回true

可以用對象的hasOwnProperty()來檢查對象自身中是否含有該屬性,該方法在原型對象的原型對象中

console.log(mc.hasOwnProperty("age"))

?Object原型里的__proto__屬性為空,因為Object的原型沒有原型,所以原型地址null

Object是構造函數,而Object.prototype是構造函數的原型對象。

*****注意區分__proto__屬性和prototype屬性*****

__proto__指向prototype內存放的地址 如果沒有prototype則__proto__值為null

原型對象也是對象,所以也有原型,當我們使用一個對象的屬性或方法時,會先在自身中尋找,自身中如果有,則直接使用,如果沒有則到原型對象中找,如果原型對象中有,則使用,如果沒有則去原型的原型中找,直到找到Object對象的原型,Object對象的原型沒有原型如果在Object中依然沒有找到,則返回undefined

console.log(mc.__proto__.__proto__.hasOwnProperty("hasOwnProperty"))

輸出true

?(圖源:實例對象、構造函數、原型之間的關系 - 李美玲 - 博客園 (cnblogs.com))

總結

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

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