這裡是修真院前端小課堂,每篇分享文從
八個方面深度解析前端知識/技能,本篇分享的是:
【簡述原型鏈是什麼,有什麼用處?】
【修真院web小課堂】
(1)背景介紹:
什麼是原型
乙個函式可以看成乙個類,原型是所有類都有的乙個屬性,原型的作用就是給這個類的每乙個物件都新增乙個統一的方法
prototype
js都是用new來從建構函式生成乙個例項物件
建構函式生成的例項無法共享屬性和方法,考慮到這點於是將prototype屬性引入到了js中
prototype這個屬性包含乙個物件,裡面放著所有例項需要共享的方法和屬性,而不需要共享的屬性和方法可以放在建構函式中
由於所有的例項物件共享同乙個prototype物件,那麼從外界看起來,prototype物件就好像是例項物件的原型,而例項物件則好像"繼承"了prototype物件一樣。
(2)知識剖析:
__proto__和prototype
每個物件都有乙個__proto__屬性,而prototype只有函式才有
物件是由建構函式建立的,函式也是物件,函式是由function建立的,物件的__proto__等於建立者的prototype
什麼是原型鏈
每個物件都有乙個__proto__,它指向它的prototype原型物件,而prototype原型物件又具有乙個自己的原型物件,就這樣層層向下上直到乙個物件的原型prototype為null 這個查詢的路徑就是原型鏈
(3)常見問題:
如何訪問乙個物件的原型?
(4)解決方案:
__proto__,prototype,object.getprototypeof()
prototype,只有函式物件才擁有乙個屬性,用來訪問其原型物件
__proto__,是任何引用型別都擁有的屬性,指向其建構函式的prototype,但是並不是標準寫法,是乙個特殊的內部屬性
object.getprototypeof()該屬性是es5引入的乙個標準屬性,用來獲取物件的原型,其作用和__proto__是一樣
function pig(name) {
this.name = name
var a = new pig("胖胖");
var b = new pig("瘦瘦");
pig.prototype.like = "red"
a.__proto__.like="red";
object.getprototypeof(a).like="red"
(5)編碼實戰:
(6)拓展思考:
使用prototype需要注意什麼
盡量去修改增添,使用物件字面量建立原型方法要謹慎
function pig(name) {
this.name = name
pig.prototype = {//這個寫法必須寫到最上面,必須要在例項物件前面
like: "red",
var a = new pig("胖胖");
var b = new pig("瘦瘦");
object.getprototypeof(a).like="red"
(7)參考文獻:
答:乙個函式可以看成乙個類,原型是所有類都有的乙個屬性,原型的作用就是給這個類的每乙個物件都新增乙個統一的方法
2、什麼是原型鏈
答:每個物件都有乙個__proto__,它指向它的prototype原型物件,而prototype原型物件又具有乙個自己的原型物件,就這樣層層向下上直到乙個對 象的原型prototype為null 這個查詢的路徑就是原型鏈
3、如何訪問乙個物件的原型?
答:prototype,只有函式物件才擁有乙個屬性,用來訪問其原型物件
__proto__,是任何引用型別都擁有的屬性,指向其建構函式的prototype,但是並不是標準寫法,是乙個特殊的內部屬性
object.getprototypeof()該屬性是es5引入的乙個標準屬性,用來獲取物件的原型,其作用和__proto__是一樣
簡述原型鏈是什麼,有什麼用處?
這裡是修真院前端小課堂,每篇分享文從 八個方面深度解析前端知識 技能,本篇分享的是 簡述原型鏈是什麼,有什麼用處?修真院web小課堂 1 背景介紹 什麼是原型 乙個函式可以看成乙個類,原型是所有類都有的乙個屬性,原型的作用就是給這個類的每乙個物件都新增乙個統一的方法 prototype js都是用n...
stdafx h是什麼用處?
stdafx.h標頭檔案的作用 stdafx.h檔案中包含了一些必要的標頭檔案 如afxwin.h 對應於stdafx.h有乙個stdafx.cpp檔案,該檔案內包含一句 include stdafx.h 其作用是令編譯器編譯出乙個stdafx.obj預編譯標頭檔案 pre compile head...
cdn有什麼用處
下面是大部分朋友對wdcdn的疑惑,下面一一為大家解答 cdn節點多,伺服器多,可以防禦流量攻擊嗎?cdn可以隱藏ip嗎?問 cdn節點眾多。伺服器頻寬充足,可以用來防禦流量攻擊嗎?答 乙個完善的cdn 加速網路會在不同線路,不同地區部署多個加速節點。節點一般頻寬都很充足。但是普通的cdn網路並不適...