亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript原型及實例分析

發布時間:2021-12-26 19:30:20 來源:億速云 閱讀:136 作者:柒染 欄目:開發技術

今天就跟大家聊聊有關JavaScript原型及實例分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

構造函數 實例 原型三者的關系

1.任何函數都有一個prototype屬性,該屬性是一個對象

function F () {}
console.log(F.prototype) // => object
//原型對象
F.prototype.sayHi = function () {
  console.log('hi!')
}

2.構造函數的prototype對象默認都有一個constructor屬性,指向prototype對象所在函數

console.log(F.constructor === F) // => true
//表示這個

3.通過構造函數得到的實例對象內部會包含一個指向構造函數的prototype對象的指針_proto_

var instance = new F()
console.log(instance.__proto__ === F.prototype) // => true

意思是用當前構造函數創建的實例對象內部都包含一個指針,這個指針就是_proto_,然后這個指針是指向構造函數的prototype對象的

因此我們可以直接用實例訪問原型對象上的成員

例:

instance.sayHi() // => 打印hi!

注意

_proto_是一個非標準屬性

prototype屬性

Javascript 規定,每一個構造函數都有一個 prototype 屬性,指向另一個對象。
這個對象的所有屬性和方法,都會被構造函數的實例繼承。

這也就意味著,我們可以把所有對象實例需要共享的屬性和方法直接定義在prototype對象上。

例子:

function Person (name, age) {
  this.name = name
  this.age = age
}
console.log(Person.prototype)//打印原型
Person.prototype.type = 'human'//將human掛載到原型對象的屬性上
Person.prototype.sayName = function () {//還可以定義函數
  console.log(this.name)
}
let p1 = new Person(...)
let p2 = new Person(...)
console.log(p1.sayName === p2.sayName) // => true

我們可以看到console.log(p1.sayName === p2.sayName)這行代碼打印的結果是true

這是因為所有實例的type屬性和sayName()方法都是一個同一個內存地址,都是指向prototype對象,因此提高了運行效率

屬性或成員的搜索原則

我們知道了多個實例對象是可以共享原型對象中的屬性或成員的,那么js中是怎么實現這個共享機制的呢?

這就不得不提到屬性的搜索原則了

每當代碼讀取某個實例對象的某個屬性時,都會執行一次搜索,搜索目標是具有給定名字的屬性或者成員

搜索過程如下:

1.首先從對象實例本身開始搜索

2.如果在實例對象中找到了具有給定名字的屬性,則返回該屬性的值

3.如果沒有找到,則繼續搜索實例對象中含有的指針(上文中講過)指向的原型對象,在原型對象中查找具有給定名字的屬性

4.如果在原型對象中找到了這個屬性,則返回該屬性的值

在執行instance.sayName()時,會執行兩次搜索,第一次搜索實例對象,第二次搜索原型對象

看完上述內容,你們對JavaScript原型及實例分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金沙县| 荔波县| 乌兰浩特市| 鄱阳县| 金堂县| 宣城市| 江阴市| 洪雅县| 巴塘县| 福贡县| 西峡县| 通渭县| 和田市| 随州市| 潞城市| 岐山县| 繁昌县| 东乡族自治县| 通海县| 云梦县| 庆阳市| 敦煌市| 苏州市| 遂溪县| 塔城市| 永安市| 泰来县| 龙泉市| 大庆市| 沙雅县| 湘潭市| 开封市| 登封市| 黄浦区| 元氏县| 孟连| 韶山市| 临汾市| 察哈| 什邡市| 鞍山市|