您好,登錄后才能下訂單哦!
這篇“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中原型和原型鏈的示例分析”這一關鍵問題有了一定的理解,具體使用情況還需要大家自己動手實驗使用過才能領會,快去試試吧,如果想閱讀更多相關知識點的文章,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。