中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

javascript中原型和原型鏈的示例分析

發布時間:2021-02-23 10:12:45 來源:億速云 閱讀:157 作者:清風 欄目:web開發

這篇“javascript中原型和原型鏈的示例分析”除了程序員外大部分人都不太理解,今天小編為了讓大家更加理解“javascript中原型和原型鏈的示例分析”,給大家總結了以下內容,具有一定借鑒價值,內容詳細步驟清晰,細節處理妥當,希望大家通過這篇文章有所收獲,下面讓我們一起來看看具體內容吧。

JavaScript的特點

1.JavaScript主要用來向HTML頁面添加交互行為。 2.JavaScript可以直接嵌入到HTML頁面,但寫成單獨的js文件有利于結構和行為的分離。 3.JavaScript具有跨平臺特性,在絕大多數瀏覽器的支持下,可以在多種平臺下運行。

[[Prototype]]

幾乎所有對象在創建的時候都會生成[[Prototype]]鏈,就是人們常說的原型鏈,當你試圖引用對象的屬性時,會觸發對象的[[Get]]操作,對于默認的[[Get]]操作來說,第一步就是去查找當前的對象中有沒有你要引用的屬性,如果有就會使用它,如果沒有找到,就會去查找這個對象的原型鏈,舉個例子:

var one = {
  type: 'one'
}
var two = Object.create(one)

console.log(two.type) // one

在上述例子中,two對象中并沒有type屬性,但是由于Object.create(創建一個新對象,帶著指定的原型對象和屬性)將one對象和two對象聯系到一起,因此在原型鏈的查找過程中,即便在two對象中沒有找到type屬性,會繼續向上查找,在one對象中查找到type屬性并打印,如果沿著原型鏈一直向上查找都沒有找到,則會打印undefined

prototype

要講清楚prototype是什么先舉一個簡單的例子:

function origin(type) {
  this.type = type
  console.log(this.type)
}
origin.prototype.name = 'origin'
var son1 = new origin('male')
var son2 = new origin('male')
console.log(son1.name) // origin
console.log(son2.name) // origin

函數origin的prototype屬性實際上相當與一個對象,這個對象指向實例son1和son2的原型對象,因此,當調用name屬性,會沿著原型鏈一直向上找,輸出origin.prototype.name的值,簡單來說,函數的prototype對象會指向實例的原型,從另一個角度上來說,也可以說son1和son2繼承了函數origin的prototype對象

constructor

先看一個簡單的例子:

function origin() {

}
const son = new origin()
console.log(origin.prototype.constructor === origin) // true
console.log(son.constructor === origin) // true

origin.prototype默認有一個公有并且不可枚舉的屬屬性,constructor,并且這個屬性引用的是對象關聯的函數,因此origin.prototype.construct = origin,同時實例對象son也有一個construcor屬性,指向創建這個對象的函數

_proto_

__proto__其實是一個絕大多數瀏覽器支持的用來訪問內部原型鏈的一個屬性

    son.__proto__ === origin.prototype // true

當調用son.__proto__實際上調用了son.__proto__(),返回值和Object.getPrototypeOf(origin)結果相同

感謝你的閱讀,希望你對“javascript中原型和原型鏈的示例分析”這一關鍵問題有了一定的理解,具體使用情況還需要大家自己動手實驗使用過才能領會,快去試試吧,如果想閱讀更多相關知識點的文章,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

沙坪坝区| 眉山市| 滁州市| 建平县| 常山县| 山东省| 嘉兴市| 阜宁县| 米易县| 大安市| 磐石市| 永平县| 武平县| 石嘴山市| 宜丰县| 青浦区| 资兴市| 榆中县| 五指山市| 彰化县| 安达市| 义马市| 收藏| 宁化县| 邛崃市| 濮阳市| 南昌县| 沂源县| 古田县| 邯郸市| 曲松县| 乐业县| 乐安县| 景宁| 眉山市| 婺源县| 新绛县| 盐亭县| 海盐县| 独山县| 游戏|