javascript的constructor簡單介紹

来源:http://www.cnblogs.com/nulifendou/archive/2016/01/06/5105063.html
-Advertisement-
Play Games

javascript的constructor簡單介紹:constructor可以返回對象對創建它的構造函數的引用,例如:var arr=[1,2,3];console.log(arr.constructor===Array);以上代碼中的輸出值是true,這說明數組對象arr的constructor...


javascript的constructor簡單介紹:
constructor可以返回對象對創建它的構造函數的引用,例如:

var arr=[1,2,3];
console.log(arr.constructor===Array);

以上代碼中的輸出值是true,這說明數組對象arr的constructor屬性指向它的構造函數Array。
可能上面的代碼過於簡單了,下麵再來一點稍稍複雜的代碼分析一下:

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螞蟻部落

原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=9185

更多內容可以參閱:http://www.softwhy.com/javascript/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • #import "ViewController.h"@interface ViewController ()@property (nonatomic,strong) UITextField *tf;@end@implementation ViewController- (void)viewDidLo...
  • 最近換了新電腦,裝上Xcode敲代碼發現很多以前攢的Code Snippet忘記備份了,總結了一下Code Snippet的設置方法,且行且添加,慢慢積累吧。如下圖:Title - Code Snippet標題Summary -Code Snippet摘要Platform -Code Snippet...
  • 在創建IOS項目時,若有一個比較明確的層級架構,將對於今後代碼的維護或者功能的擴展很有幫助;本文將通過一個實例來展現我對於層級的一些觀點;裡面有一些零碎的知識點可能無法全部介紹,到時提供源代碼進行下載,也希望有其它更好的觀點可以提出來;一:首先瞭解整個項目的情況註意:項目中結合Pod進行一些第三方插...
  • margin外邊距負值的作用:在很多CSS代碼中,都可以看到margin外邊距有使用負值的情況,下麵就介紹一下他的作用。代碼實例如下:螞蟻部落 以上代碼展現了外邊距負值的作用,也就是和正值的作用相反。關於負值的實例應用可以參閱CSS如何實現數字分頁效果一章節。原文地址是:http://www....
  • 點擊按鈕添加或者刪除一行實例代碼:網站在填寫表達的時候又很多的選擇空間,甚至可以自行添加需要添加的內容,例如可以點擊按鈕添加一個表達項,如果不需要的話可以點擊一個按鈕刪除,下麵就簡單介紹一下如何實現此效果。代碼實例如下:點擊按鈕添加或者刪除一行-螞蟻部落 ID 用戶名 類型 ...
  • javascript如何將時間日期轉換為Date對象:有時候需要講一個字元串型的時間日期轉換為Date時間對象,下麵就通過一個簡單的實例提供一種解決方案,當然也是一種思路,可以進行一定的變通,以達到舉一反三的效果。例如這裡有一個時間日期字元串:2013-9-15 8:25:30下麵就將它們轉換為時間...
  • 讓input文本框文本垂直居中代碼實例:很多時候講究對稱美,也有時候講究不對稱的美,當然這個要分具體情況,在文本框中一般對稱一些更為美觀,下麵就通過代碼實例介紹如何實現文本框中的文本垂直居中對齊。代碼實例如下:螞蟻部落 以上代碼實現了我們的要求,將height屬性值和line-height屬...
  • 按鈕倒計時可用效果實例代碼:很多網頁都有這樣的效果,那就是按鈕必須在指定的倒計時之後才是可用的,下麵就通過代碼實例介紹一下如何實現此效果。代碼如下:螞蟻部落 以上代碼實現了我們的要求,當點擊按鈕之後,開始倒計時效果,當倒計時完畢按鈕才是可用的。原文地址是:http://www.softwhy.com...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...