javascript constructor簡單介紹
constructor可以返回物件對建立它的建構函式的引用,例如:
[JavaScript] 純文字檢視 複製程式碼var arr=[1,2,3]; console.log(arr.constructor===Array);
以上程式碼中的輸出值是true,這說明陣列物件arr的constructor屬性指向它的建構函式Array。
可能上面的程式碼過於簡單了,下面再來一點稍稍複雜的程式碼分析一下:
[JavaScript] 純文字檢視 複製程式碼Object.prototype.webName="螞蟻部落"; function show(){ this.name="show函式name"; } show.prototype={ constructor:show, name:"show的原型物件的name", msg:function(){return this.name + this.webName} } var prototypeObj=show.prototype; console.log(prototypeObj.msg()); var obj=new prototypeObj.constructor; console.log(obj.name); var showObj=new show(); console.log(showObj.msg());
下面對以上程式碼進行一下注釋:
1.Object.prototype.webName="螞蟻部落"為Object的原型物件新增一個名為webName的屬性,屬性值為:螞蟻部落。
2.function show(){this.name="show函式name"},建立一個函式,當次函式用作建構函式的時候,this就只想通過建構函式建立的物件物件例項,那麼此物件例項的name屬性值為:show函式name。
3.show.prototype={},將show的原型物件設定為後面的物件直接量。
4.constructor:show,將原型物件的constructor屬性指向show函式。
5.name:"show的原型物件的name",屬性和屬性值,這個很簡單就不用數了。
6.msg:function(){return this.name + this.webName},和上面一個道理,只不過是函式而已。
7.var prototypeObj=show.prototype,將show函式的原型物件的引用賦值給變數prototypeObj。
8.console.log(prototypeObj.msg()),因為prototypeObj是show的原型物件的引用,那麼將會輸出:show的原型物件的name螞蟻部落,在msg,第一個this是指向原型的物件例項,第二個this也是,不過在原型物件中沒有webName屬性,那麼將會通過原型鏈找到Object的原型的webName屬性。
9.var obj=new prototypeObj.constructor,prototypeObj是指向show的原型物件的,也就是那個物件直接量,此物件直接量的constructor屬性是指向show函式的,所以這裡就是建立了一個show的物件例項。
10.console.log(obj.name),所以將會輸出show函式name。
11.var showObj=new show(),建立一個show的物件例項。
12.console.log(showObj.msg()),msg函式中的this是指向show的物件例項,儘管在原型物件中也有name屬性,但是物件本身的優先順序要高,第二個this自然也是指向show的物件例項,依然通過原型鏈找到:螞蟻部落,所以輸出結果為:show函式name螞蟻部落。
相關文章
- JavaScript 簡單介紹JavaScript
- 簡單介紹克隆 JavaScriptJavaScript
- javascript物件簡單介紹JavaScript物件
- javascript this指向簡單介紹JavaScript
- javascript加密簡單介紹JavaScript加密
- 簡單介紹JavaScript閉包JavaScript
- JavaScript希爾排序簡單介紹JavaScript排序
- javascript建立物件簡單介紹JavaScript物件
- javascript的this用法簡單介紹JavaScript
- javascript arguments用法簡單介紹JavaScript
- javascript 變數簡單介紹JavaScript變數
- javascript簡單模板引擎介紹JavaScript
- javascript作用域簡單介紹JavaScript
- JavaScript return語句簡單介紹JavaScript
- javascript鏈式呼叫簡單介紹JavaScript
- javascript除法運算簡單介紹JavaScript
- javascript &&和||運算子簡單介紹JavaScript
- javascript方法過載簡單介紹JavaScript
- javascript遞迴概念簡單介紹JavaScript遞迴
- JavaScript this指向解綁簡單介紹JavaScript
- javascript陣列操作簡單介紹JavaScript陣列
- javascript with()語句用法簡單介紹JavaScript
- javascript匿名函式簡單介紹JavaScript函式
- javascript的in運算子簡單介紹JavaScript
- javascript變數宣告簡單介紹JavaScript變數
- javascript氣泡排序簡單介紹JavaScript排序
- 如何學習javascript簡單介紹JavaScript
- javascript生命週期簡單介紹JavaScript
- javascript變數汙染簡單介紹JavaScript變數
- javascript AMD規範簡單介紹JavaScript
- javascript如何操作iframe簡單介紹JavaScript
- javascript求餘運算簡單介紹JavaScript
- javascript取模運算簡單介紹JavaScript
- javascript關聯陣列簡單介紹JavaScript陣列
- javascript Object型別物件簡單介紹JavaScriptObject型別物件
- javascript記憶體管理簡單介紹JavaScript記憶體
- javascript innerText屬性用法簡單介紹JavaScript
- javascript call()函式用法簡單介紹JavaScript函式