關於js原型的面試題

来源:http://www.cnblogs.com/momo798/archive/2016/09/24/5903921.html
-Advertisement-
Play Games

今天遇到關於javascript原型的一道面試題,現分析下: 原題如下: function A(){ } function B(a){ this.a = a; } function C(a){ if(a){ this.a = a; } } A.prototype.a = 1; B.prototype ...


今天遇到關於javascript原型的一道面試題,現分析下:

原題如下:

    function A(){

    }

    function B(a){

      this.a = a;

    }

    function C(a){

      if(a){

        this.a = a;

      }

    }

    A.prototype.a = 1;

    B.prototype.a = 1;

    C.prototype.a = 1;

 

    console.log(new A().a);

    console.log(new B().a);

    console.log(new C(2).a);

 

分析:

console.log(new A().a);  //new A()為構造函數創建的對象,本身沒有a屬性,所以向它的原型去找,發現原型的a屬性的屬性值為1,故該輸出值為1;

 

console.log(new B().a);  //new B()為構造函數創建的對象,該構造函數有參數a,但該對象沒有傳參,故該輸出值為undefined;

 

console.log(new C(2).a);  //new C()為構造函數創建的對象,該構造函數有參數a,且傳的實參為2,執行函數內部,發現if為真,執行this.a = 2,故屬性a的值為2;

 

故這三個的輸出值分別為:1、undefined、2.  


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

-Advertisement-
Play Games
更多相關文章
  • 首先是apply()一個很強大的功能——能將一個數組預設轉化為參數列表!!! 應用: 1.求出一個數組中的最大值 Math.max()方法接受多個參數,但是不接受數組,所以直接Math.max(arr)是無法達到效果的,由apply()將數組轉化成參數列表進行操作。 2.合併數組 ①使用concat ...
  • 最近angular2正式版發佈了,現在就趁熱接著記錄一下2.0版的Hello World。據說由RC6升級到2.0代碼改動不是很大,在寫的時候也感覺改動不是很大,這次記錄還是以asp.net core 空項目模板為基礎,本著在此基礎上添加最少的代碼來實現Hello World,沒用的代碼全部清掉(用 ...
  • 百度地圖API 百度地圖API當然在官方文檔學習更加清晰,我只是做一下我這2天研究一個總結。 首先,應該在上面的鏈接申請一個你的密鑰。 接著,顯示百度地圖,先上代碼再解釋: 創建地圖實例 這裡通過new 創建一個地圖實例,其中參數可以是id也可以是元素對象,用於在頁面上展現地圖,所以給html元素設 ...
  • ES5概述(ECMAScript262/5.1) 本文參考: "ES5概述" ECMAScript 是基於對象的: 基本語言和宿主設施都由對象提供,ECMAScript 程式是一組可通信的對象。ECMAScript 對象是屬性的集合,每個屬性有零個或多個 特性,以及屬性的使用方式。例如,當設置一個屬 ...
  • 今天使用webpack-sample初始一個vue-cli項目,在app.vue文件中添加了個鉤子函數ready,可是ready內的事件一直不執行,檢查了webpack文件和package.json也沒發現什麼問題,瀏覽器也沒報錯或者提示,很令人捉急。然後去github看了webpack-simpl ...
  • 在命名規則上,構造函數一般是首字母大寫,普通函數遵照小駝峰式命名法。 在函數調用的時候: function fn() { } 構造函數:1. new fn( ) 2 .構造函數內部會創建一個新的對象,即f的實例 3. 函數內部的this指向 新創建的f的實例 4. 預設的返回值是f的實例 普通函數: ...
  • 當解析器遇到 script 標簽時,文檔的解析將停止,並立即下載並執行腳本,腳本執行完畢後將繼續解析文檔。但是我們可以將腳本標記為 defer,這樣就不會停止文檔解析,等到文檔解析完成才執行腳本,也可以將腳本標記為 async,以便由其他線程對腳本進行解析和執行。 <! more 三者之間的區別? ...
  • 作為Web開發者,這是好的時代,也是壞的時代。Web開發技術也在不斷變化。雖然很令人興奮,但是這也意味著Web開發人員需要要積極主動的學習新技術和新的編程語言,並願意和渴望接受新的挑戰,以適應變化。新的挑戰可能會包括一些開發上的要求,如利用適應現有的框架來滿足業務需求。測試一個網站,能從中知道出了哪 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...