1. 程式人生 > >前端面試 JS 篇

前端面試 JS 篇

談談兩種設計模式

1:工廠模式

主要好處就是可以消除物件間的耦合,通過使用工程方法而不是 new 關鍵字。將所有例項化的程式碼集中在一個位置防止程式碼重複。

工廠模式解決了重複例項化的問題 ,但還有一個問題,那就是識別問題,因為根本無法搞清楚他們到底是哪個物件的例項。

function createObject(name,age,profession){
    //集中例項化的函式
    var obj = new Object();
    obj.name = name;
    obj.age = age;
    obj.profession = profession;
    obj.move = function
() {
return this.name + ' at ' + this.age + ' engaged in ' + this.profession; }; return obj; } var test1 = createObject('trigkit4',22,'programmer');//第一個例項var test2 = createObject('mike',25,'engineer');//第二個例項

2:建構函式模式

使用建構函式的方法 ,即解決了重複例項化的問題 ,又解決了物件識別的問題,該模式與工廠模式的不同之處在於:

1.建構函式方法沒有顯示的建立物件 (new
Object()); 2.直接將屬性和方法賦值給 this 物件; 3.沒有 renturn 語句。

null 和 undefined 的區別?

  • 對未初始化的變數執行 typeof 操作符會返回 undefined 值,對未宣告的變數執行 typeof 操作符同樣也會返回 undefined 值,所以我們在編寫程式碼的過程中應該顯示的初始化變數,那麼當 typeof 返回 undefined 的時候,我們就知道被檢測的變數還沒有被宣告而不是還沒有初始化。、

  • undefined 值是派生自 null 值的,他們的相等性測試要返回 true

alert(null == undefined
);//true alert(null === undefined);//false
  • null 值表示一個空物件指標,而這也正是使用 typeof 操作符檢測 null 值會返回 “object” 的原因。

  • 如果定義的變數準備在將來用於儲存物件,那麼最好將該變數初始化為 null,而不是其他值,這樣一來,只要直接檢查 `null“ 值就可以知道相應的變數是否已經儲存了一個物件的引用。

if (car != null){
    //對 car 物件執行某些操作
}
  • 無論在什麼情況下都沒有必要把一個變數的值顯示的設定為 undefined,可以同樣的規則對 null 卻不適用。換句話說,只要意在儲存物件的變數還沒有真正儲存物件,就應該明確的讓該變數儲存 null 值。這樣做不僅可以體現 null 作為空物件指標的慣例,而且也有助於進一步區分 nullundefined

編寫一個函式實現對 Object,Array,Boolean,Number,String 這五種主要資料型別進行值複製

function clone(obj) {
    var o;
    switch (typeof obj) {
        case "undefined":
            break;
        case "string":
            o = obj + "";
            break;
        case "number":
            o = obj - 0;
            break;
        case "boolean":
            o = obj;
            break;
        case "object": // object 分為兩種情況 物件(Object)或陣列(Array)
            if (obj === null) {
                o = null;
            } else {
                if (Array.isArray(obj)) {
                    o = [];
                    for (var i = 0; i < obj.length; i++) {
                        o.push(clone(obj[i]));
                    }
                } else {
                    o = {};
                    for (var k in obj) {
                        o[k] = clone(obj[k]);
                    }
                }
            }
            break;
        default:
            o = obj;
            break;
    }
    return o;
}

相關推薦

前端面試 JS

談談兩種設計模式 1:工廠模式 主要好處就是可以消除物件間的耦合,通過使用工程方法而不是 new 關鍵字。將所有例項化的程式碼集中在一個位置防止程式碼重複。 工廠模式解決了重複例項化的問題 ,但還有一個問題,那就是識別問題,因為根本

前端面試js(3)

1.擷取字串abcdace的acealert('abcdace'.substring(4));2.規避javascript多人開發函式重名問題名稱空間封閉空間js模組化mvc(資料層、表現層、控制層)seajs變數轉換成物件的屬性物件化3.javascript面向物件中繼承實

前端面試--js程式碼片段(基礎中的基礎,持續更新中)

程式碼片段1: var arr1 = [1,2,3,4,5] var arr2 = [] for(var i = 0; i < arr1.length; i ++) { arr2.push(function(){ alert(i)

前端面試JS題目複習大綱

前端面試JS題目 JS 介紹js的基本資料型別。 Undefined、Null、Boolean、Number、String、 複雜資料型別:Object   介紹js有哪些內建物件? Object 是 JavaScript 中所有物件的父物件 資料封裝類物件

前端面試 js 你有多瞭解call,apply,bind?

函式原型鏈中的 apply,call 和 bind 方法是 JavaScript 中相當重要的概念,與 this 關鍵字密切相關,相當一部分人對它們的理解還是比較淺顯,所謂js基礎紮實,繞不開這些基礎常用的API,這次讓我們來徹底掌握它們吧! 目錄 call,apply,bind的基本介紹 call/a

前端面試(原生 js ) - 精確運算

一、面試題 問:開發的時候有用到過 Math 嗎? 答:很多啊。比如生成 GUID 的時候,就會用到 Math.random() 來生成隨機數。 問:別的呢?比如向下取整、向上取整? 答:向下取整是 floor(),向上取整是 ceil()。另外還可以用&nbs

前端面試指南之js

JavaScript JavaScript的組成 JavaScript 由以下三部分組成: ECMAScript(核心):JavaScript 語言基礎 DOM(文件物件模型):規定了訪問HTML和XML的介面 BOM(瀏覽器物件模

前端面試知識點大全——JS(二)

目錄 1.1 閉包 1.6 小結 5.1 區別 9.1 作用 9.2 使用 9.6 優點 9.7 缺點 10.跨域 1.閉包 與 作用域、作用域鏈

前端面試js整理(一)

js的基本型別有哪些?引用型別有哪些?null和undefined的區別 js變數的值有兩種: 1.基本型別值:存放在棧記憶體的簡單資料型別。如Number、String 、Boolean、Null和Undefined這物種 2.引用型別值:存放在堆記憶

前端面試之道小冊筆記】JS基礎No.1

prim 轉字符串 獲取 筆記 特點 只需要 att -s 沒有 1、數據類型 原始值:boolean、null、undefined、number、string、symbol 2、類型轉換: 轉Boolean 在條件判斷時,除了 undefined, null, f

前端開發--面試題整理(JS

狀態 state oda 通過 cli 命名空間 script push arguments 1.截取字符串abcdace的acealert(‘abcdace‘.substring(4)); 2.規避javascript多人開發函數重名問題命名空間封閉空間js模塊化mvc(

前端面試基礎-html之H5新特性

-h 側邊欄 沒有 開發者 制作 article 廣告 隱藏 val h5的新特性(目前個人所了解)如下 語義化標簽 表單新特性 視頻(video)和音頻(audio) canvas畫布 svg繪圖 地理定位 為鼠標提供的拖放API webworker (重點)Stora

文章搞定前端面試

ron miss 就是 節點數 網頁 那是 png html 性能優化 本文旨在用最通俗的語言講述最枯燥的基本知識 面試過前端的老鐵都知道,對於前端,面試官喜歡一開始先問些HTML5新增元素啊特性啊,或者是js閉包啊原型啊,或者是css垂直水平居中怎麽實現啊之類的基礎問題

前端面試JS閉包

前端面試之JS閉包 面試回答: 什麼是閉包 :閉包就是在函式裡定義函式,而且內部函式可以引用外部函式的引數和區域性變數,當外部函式返回這個內部函式時,內部函式引用的引數和區域性變數儲存在內部函式裡 為什麼要用閉包:因為js的函式作用域的關係,一般情況下外部是訪問不了函式內部的變數的,

前端每週清單半年盤點之 Vue.js

前端每週清單專注前端領域內容,以對外文資料的蒐集為主,幫助開發者瞭解一週前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源專案、巔峰人生等欄目。歡迎關注【前端之巔】微信公眾號(ID:frontshow),及時獲取前端每週清單;本文則是對於半年來發布的前端每週清單中的 Vue.js 相

前端面試絕對會考的JS問題!【已經開源】

寫在前面 【前端指南】前端面試庫已經開源,正在完善之中 [x] css問題 [x] html問題 [x] javascript問題 github地址 https://github.com/nanhupatar... JavaScript 的組成 JavaScript 由以下三

03-撩課大前端面試寶典—第三

1. javascript的typeof返回哪些資料型別? 答案:   undefined   string   boolean   number   symbol(ES6)   Object   Function 2. 列舉3種強制型別轉換和2種隱式型別轉換?

02-撩課大前端面試寶典—第二

1.偽類與偽元素的區別? 1) 定義區別 偽類 偽類用於選擇DOM樹之外的資訊,或是不能用簡單選擇器進行表示的資訊。 前者包含那些匹配指定狀態的元素,比如:visited,:active;後者包含那些滿足一定邏輯條件的DOM樹中的元素,比如:first-child,:fi

05-撩課大前端-面試寶典-第五

1.寫一個深度克隆方法(es5)? /** * 深拷貝 * @param {object}fromObj 拷貝的物件 * @param {object}toObj 目標物件 */ function deepCopyObj2NewObj(fromObj, toObj) {

04-撩課大前端面試寶典—第四

1. 如何實現瀑布流? 瀑布流佈局的原理: 1) 瀑布流佈局要求要進行佈置的元素等寬, 然後計算元素的寬度, 與瀏覽器寬度之比,得到需要佈置的列數; 2) 建立一個數組,長度為列數, 裡面的值為已佈置元素的總高度(最開始為0); 3) 然後將未佈置的元素依