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

歡迎訪問 生活随笔!

生活随笔

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

javascript

JS----javascript原型和原型链

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

原型對象

絕大部分的函數(少數內建函數除外)都有一個prototype屬性,這個屬性是原型對象用來創建新對象實例,而所有被創建的對象都會共享原型對象,因此這些對象遍可以訪問原型對象的屬性。
例如:hasOwnProperty()方法存在于Object原型對象中,他便可以被任何對象當做自己的方法使用
用法:object.hasOwnProperty(propertyName)
hasOwnProperty()函數的返回值為Boolean類型。如果對象object具有名稱為propertyName的屬性,則返回true,否則返回false

var person = {name:"Messi",age:'18',profession:"footabll player" }; console.log(person.hasOwnProperty('name')); // true console.log(person.hasOwnProperty('hasOwnProperty')); // false console.log(Object.prototype.hasOwnProperty('hasOwnProperty')); // true

由以上代碼可知,hasOwnProperty() 并不存在于 person 對象中,但是 person 依然可以擁有此方法,所以 person 對象是如何找到 Object 對象中的方法呢? 靠的是原型鏈

1. prototype

每個函數都有一個prototype屬性,被稱為顯示原型

2._ _proto_ _

  • 每個實例對象都會有_ proto _屬性,其被稱為隱式原型
  • 每一個實例對象的隱式原型_ proto _屬性指向自身構造函數的顯式原型prototype

3. constructor

每個prototype原型都有一個constructor屬性,指向它關聯的構造函數。

4. 原型鏈

原因是每個對象都有__proto__屬性,此屬性指向該對象的構造函數的原型
對象可以通過__proto__ 與上游的構造函數的原型對象連接起來,而上游的原型對象也有一個 __proto__,這樣就形成了一個原型鏈

獲取對象屬性時,如果對象本身沒有這個屬性,那就會去他的原型__proto__上去找,如果還查不到,就去找原型的原型,一直找到最頂層(Object.prototype)為止。Object.prototype對象也有__proto__屬性值為null。

這里需要注意的是Object是屬于原型鏈的頂層,所有構造函數的的prototype都指向 Object.prototype



首先,fn的構造函數是Foo()。所以:

fn._ _ proto _ _=== Foo.prototype

又因為Foo.prototype是一個普通的對象,它的構造函數是Object,所以:

Foo.prototype._ _ proto _ _=== Object.prototype

通過上面的代碼,我們知道這個toString()方法是在Object.prototype里面的,當調用這個對象的本身并不存在的方法時,它會一層一層地往上去找,一直到null為止。

所以當fn調用toString()時,JS發現fn中沒有這個方法,于是它就去Foo.prototype中去找,發現還是沒有這個方法,然后就去Object.prototype中去找,找到了,就調用Object.prototype中的toString()方法。

這就是原型鏈,fn能夠調用Object.prototype中的方法正是因為存在原型鏈的機制。

另外,在使用原型的時候,一般推薦將需要擴展的方法寫在構造函數的prototype屬性中,避免寫在_ _ proto _ _屬性里面。

總結

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

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