接上篇

如何判斷一個對象是否屬于某個類?

使用instanceof (待完善)

? if(a instanceof Person){

? ? ? alert('yes');

? }

new操作符具體干了什么呢?

1、創(chuàng)建一個空對象,并且 this 變量引用該對象,同時還繼承了該函數(shù)的原型。

2、屬性和方法被加入到 this 引用的對象中。

3、新創(chuàng)建的對象由 this 所引用,并且最后隱式的返回 this 。

var obj? = {};

obj.__proto__ = Base.prototype;

Base.call(obj);

用原生JavaScript的實現(xiàn)過什么功能嗎?

Javascript中,有一個函數(shù),執(zhí)行時對象查找時,永遠不會去查找原型,這個函數(shù)是?


hasOwnProperty

javaScript中hasOwnProperty函數(shù)方法是返回一個布爾值,指出一個對象是否具有指定名稱的屬性。此方法無法檢查該對象的原型鏈中是否具有該屬性;該屬性必須是對象本身的一個成員。

使用方法:

object.hasOwnProperty(proName)

其中參數(shù)object是必選項。一個對象的實例。

proName是必選項。一個屬性名稱的字符串值。

如果 object 具有指定名稱的屬性,那么JavaScript中hasOwnProperty函數(shù)方法返回 true,反之則返回 false。


JSON 的了解?

JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。

它是基于JavaScript的一個子集。數(shù)據(jù)格式簡單, 易于讀寫, 占用帶寬小

如:{"age":"12", "name":"back"}

JSON字符串轉換為JSON對象:

var obj =eval('('+ str +')');

var obj = str.parseJSON();

var obj = JSON.parse(str);

JSON對象轉換為JSON字符串:

var last=obj.toJSONString();

var last=JSON.stringify(obj);

[].forEach.call($$("*"),function(a){a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16)}) 能解釋一下這段代碼的意思嗎?

js延遲加載的方式有哪些?

defer和async、動態(tài)創(chuàng)建DOM方式(用得最多)、按需異步載入js

Ajax 是什么? 如何創(chuàng)建一個Ajax?

ajax的全稱:Asynchronous Javascript And XML。

異步傳輸+js+xml。

所謂異步,在這里簡單地解釋就是:向服務器發(fā)送請求的時候,我們不必等待結果,而是可以同時做其他的事情,等到有了結果它自己會根據(jù)設定進行后續(xù)操作,與此同時,頁面是不會發(fā)生整頁刷新的,提高了用戶體驗。

(1)創(chuàng)建XMLHttpRequest對象,也就是創(chuàng)建一個異步調(diào)用對象

(2)創(chuàng)建一個新的HTTP請求,并指定該HTTP請求的方法、URL及驗證信息

(3)設置響應HTTP請求狀態(tài)變化的函數(shù)

(4)發(fā)送HTTP請求

(5)獲取異步調(diào)用返回的數(shù)據(jù)

(6)使用JavaScript和DOM實現(xiàn)局部刷新

Ajax 解決瀏覽器緩存問題?

1、在ajax發(fā)送請求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0")。

2、在ajax發(fā)送請求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache")。

3、在URL后面加上一個隨機數(shù): "fresh=" + Math.random();。

4、在URL后面加上時間搓:"nowtime=" + new Date().getTime();。

5、如果是使用jQuery,直接這樣就可以了 $.ajaxSetup({cache:false})。這樣頁面的所有ajax都會執(zhí)行這條語句就是不需要保存緩存記錄。

同步和異步的區(qū)別?

同步的概念應該是來自于OS中關于同步的概念:不同進程為協(xié)同完成某項工作而在先后次序上調(diào)整(通過阻塞,喚醒等方式).同步強調(diào)的是順序性.誰先誰后.異步則不存在這種順序性.

同步:瀏覽器訪問服務器請求,用戶看得到頁面刷新,重新發(fā)請求,等請求完,頁面刷新,新內(nèi)容出現(xiàn),用戶看到新內(nèi)容,進行下一步操作。

異步:瀏覽器訪問服務器請求,用戶正常操作,瀏覽器后端進行請求。等請求完,頁面不刷新,新內(nèi)容也會出現(xiàn),用戶看到新內(nèi)容。

(待完善)

如何解決跨域問題?

jsonp、 iframe、window.name、window.postMessage、服務器上設置代理頁面

頁面編碼和被請求的資源編碼如果不一致如何處理?

模塊化開發(fā)怎么做?

立即執(zhí)行函數(shù),不暴露私有成員

? ? var module1 = (function(){

? ?     var _count = 0;

? ?     var m1 = function(){

? ?       //...

? ?     };

? ?     var m2 = function(){

? ?       //...

? ?     };

? ?     return {

? ?       m1 : m1,

? ?       m2 : m2

? ?     };

? ?   })();

(待完善)

AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)規(guī)范區(qū)別?

AMD 規(guī)范在這里:https://github.com/amdjs/amdjs-api/wiki/AMD

CMD 規(guī)范在這里:https://github.com/seajs/seajs/issues/242

Asynchronous Module Definition,異步模塊定義,所有的模塊將被異步加載,模塊加載不影響后面語句運行。所有依賴某些模塊的語句均放置在回調(diào)函數(shù)中。

區(qū)別:

? ? 1. 對于依賴的模塊,AMD 是提前執(zhí)行,CMD 是延遲執(zhí)行。不過 RequireJS 從 2.0 開始,也改成可以延遲執(zhí)行(根據(jù)寫法不同,處理方式不同)。CMD 推崇 as lazy as possible.

? ? 2. CMD 推崇依賴就近,AMD 推崇依賴前置??创a:

// CMD

define(function(require, exports, module) {

? ? var a = require('./a')

? ? a.doSomething()

? ? // 此處略去 100 行

? ? var b = require('./b') // 依賴可以就近書寫

? ? b.doSomething()

? ? // ...

})

// AMD 默認推薦

define(['./a', './b'], function(a, b) { // 依賴必須一開始就寫好

? ? a.doSomething()

? ? // 此處略去 100 行

? ? b.doSomething()

? ? // ...

})

requireJS的核心原理是什么?(如何動態(tài)加載的?如何避免多次加載的?如何 緩存的?)

參考:http://annn.me/how-to-realize-cmd-loader/

JS模塊加載器的輪子怎么造,也就是如何實現(xiàn)一個模塊加載器?

談一談你對ECMAScript6的了解?

ECMAScript6 怎么寫class么,為什么會出現(xiàn)class這種東西?

異步加載JS的方式有哪些?

(1) defer,只支持IE

(2) async:

(3) 創(chuàng)建script,插入到DOM中,加載完畢后callBack

documen.write和 innerHTML的區(qū)別

document.write只能重繪整個頁面

innerHTML可以重繪頁面的一部分

DOM操作——怎樣添加、移除、移動、復制、創(chuàng)建和查找節(jié)點?

(1)創(chuàng)建新節(jié)點

? createDocumentFragment()? ? //創(chuàng)建一個DOM片段

? createElement()? //創(chuàng)建一個具體的元素

? createTextNode()? //創(chuàng)建一個文本節(jié)點

(2)添加、移除、替換、插入

? appendChild()

? removeChild()

? replaceChild()

? insertBefore() //在已有的子節(jié)點前插入一個新的子節(jié)點

(3)查找

? getElementsByTagName()? ? //通過標簽名稱

? getElementsByName()? ? //通過元素的Name屬性的值(IE容錯能力較強,會得到一個數(shù)組,其中包括id等于name值的)

? getElementById()? ? //通過元素Id,唯一性

.call() 和 .apply() 的區(qū)別?

例子中用 add 來替換 sub,add.call(sub,3,1) == add(3,1) ,所以運行結果為:alert(4);

? 注意:js 中的函數(shù)其實是對象,函數(shù)名是對 Function 對象的引用。

? ? function add(a,b)

? ? {

? ? ? ? alert(a+b);

? ? }

? ? function sub(a,b)

? ? {

? ? ? ? alert(a-b);

? ? }

? ? add.call(sub,3,1);

數(shù)組和對象有哪些原生方法,列舉一下?

JS 怎么實現(xiàn)一個類。怎么實例化這個類

JavaScript中的作用域與變量聲明提升?

如何編寫高性能的Javascript?

那些操作會造成內(nèi)存泄漏?

JQuery的源碼看過嗎?能不能簡單概況一下它的實現(xiàn)原理?

jQuery.fn的init方法返回的this指的是什么對象?為什么要返回this?

jquery中如何將數(shù)組轉化為json字符串,然后再轉化回來?

jQuery 的屬性拷貝(extend)的實現(xiàn)原理是什么,如何實現(xiàn)深拷貝?

jquery.extend 與 jquery.fn.extend的區(qū)別?

* jquery.extend 為jquery類添加類方法,可以理解為添加靜態(tài)方法

* jquery.fn.extend:

? ? 源碼中jquery.fn = jquery.prototype,所以對jquery.fn的擴展,就是為jquery類添加成員函數(shù)

使用:

jquery.extend擴展,需要通過jquery類來調(diào)用,而jquery.fn.extend擴展,所有jquery實例都可以直接調(diào)用。

jQuery 的隊列是如何實現(xiàn)的?隊列可以用在哪些地方?

談一下Jquery中的bind(),live(),delegate(),on()的區(qū)別?

JQuery一個對象可以同時綁定多個事件,這是如何實現(xiàn)的?

是否知道自定義事件。jQuery里的fire函數(shù)是什么意思,什么時候用?

jQuery 是通過哪個方法和 Sizzle 選擇器結合的?(jQuery.fn.find()進入Sizzle)

針對 jQuery性能的優(yōu)化方法?

Jquery與jQuery UI 有啥區(qū)別?

*jQuery是一個js庫,主要提供的功能是選擇器,屬性修改和事件綁定等等。

*jQuery UI則是在jQuery的基礎上,利用jQuery的擴展性,設計的插件。

提供了一些常用的界面元素,諸如對話框、拖動行為、改變大小行為等等

JQuery的源碼看過嗎?能不能簡單說一下它的實現(xiàn)原理?

jquery 中如何將數(shù)組轉化為json字符串,然后再轉化回來?

jQuery中沒有提供這個功能,所以你需要先編寫兩個jQuery的擴展:

? ? $.fn.stringifyArray = function(array) {

? ? ? ? return JSON.stringify(array)

? ? }

? ? $.fn.parseArray = function(array) {

? ? ? ? return JSON.parse(array)

? ? }

? ? 然后調(diào)用:

? ? $("").stringifyArray(array)

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • @轉自GitHub 介紹js的基本數(shù)據(jù)類型。Undefined、Null、Boolean、Number、Strin...
    YT_Zou閱讀 1,316評論 0 0
  • 工廠模式類似于現(xiàn)實生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實現(xiàn)同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 8,130評論 2 17
  • 前端開發(fā)面試題 <a name='preface'>前言</a> 只看問題點這里 看全部問題和答案點這里 本文由我...
    自you是敏感詞閱讀 904評論 0 3
  • 說到底人的一生“路漫漫其修遠兮”,有血有肉的我們不可能不生氣,關鍵是我們?yōu)槭裁匆鷼??為誰生氣?生氣解決問題了嗎?...
    生活不是沉默閱讀 356評論 0 0
  • 已忘人間千百樣,輕看江山幾易手。 笑問因何而留有?只道為她尋依舊。
    木土有阿杜閱讀 239評論 1 2

友情鏈接更多精彩內(nèi)容