国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js面試題

Baoyuan / 2680人閱讀

摘要:面試題的基本數據類型和引用數據類型基本數據類型引用數據類型和有何區別表示一個對象被定義了,值為空值表示不存在這個值。

js面試題 JS的基本數據類型和引用數據類型

基本數據類型:undefined、null、boolean、number、string、symbol
引用數據類型:object、array、function

null 和 undefined 有何區別?

null 表示一個對象被定義了,值為“空值”;
undefined 表示不存在這個值。
typeof undefined //"undefined"
undefined :是一個表示"無"的原始值或者說表示"缺少值",就是此處應該有一個值,但是還沒有定義。當嘗試讀取時會返回 undefined;
例如變量被聲明了,但沒有賦值時,就等于undefined。
typeof null //"object"
null : 是一個對象(空對象, 沒有任何屬性和方法);
例如作為函數的參數,表示該函數的參數不是對象;
注意: 在驗證null時,一定要使用 === ,因為 == 無法分別 null 和 undefined

介紹JS有哪些內置對象?

數據封裝類對象:Object、Array、Boolean、Number、String
其他對象:Function、Arguments、Math、Date、RegExp、Error
ES6新增對象:Symbol、Map、Set、Promises、Proxy、Reflect

JavaScript有幾種類型的值?,你能畫一下他們的內存圖嗎

原始數據類型(Undefined,Null,Boolean,Number、String)-- 棧
引用數據類型(對象、數組和函數)-- 堆
兩種類型的區別是:存儲位置不同:
原始數據類型是直接存儲在棧(stack)中的簡單數據段,占據空間小、大小固定,屬于被頻繁使用數據;
引用數據類型存儲在堆(heap)中的對象,占據空間大、大小不固定,如果存儲在棧中,將會影響程序運行的性能;
引用數據類型在棧中存儲了指針,該指針指向堆中該實體的起始地址。
當解釋器尋找引用值時,會首先檢索其在棧中的地址,取得地址后從堆中獲得實體。

如何編寫高性能的JavaScript?

遵循嚴格模式:"use strict"; 將js腳本放在頁面底部,加快渲染頁面;將js腳本將腳本成組打包,減少請求;使用非阻塞方式下載js腳本;盡量使用局部變量來保存全局變量;盡量減少使用閉包;使用 window 對象屬性方法時,省略 window;盡量減少對象成員嵌套;緩存 DOM 節點的訪問
通過避免使用 eval() 和 Function() 構造器;給 setTimeout() 和 setInterval() 傳遞函數而不是字符串作為參數;盡量使用直接量創建對象和數組;最小化重繪(repaint)和回流(reflow)

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

JavaScript作用域:
在Java、C等語言中,作用域為for語句、if語句或{}內的一塊區域,稱為作用域;
而在 JavaScript 中,作用域為function(){}內的區域,稱為函數作用域。
JavaScript變量聲明提升:
在JavaScript中,函數聲明與變量聲明經常被JavaScript引擎隱式地提升到當前作用域的頂部。
聲明語句中的賦值部分并不會被提升,只有名稱被提升
函數聲明的優先級高于變量,如果變量名跟函數名相同且未賦值,則函數聲明會覆蓋變量聲明
如果函數有多個同名參數,那么最后一個參數(即使沒有定義)會覆蓋前面的同名參數

DOM 操作——怎樣添加、移除、移動、復制、創建和查找節點?

(1)創建新節點
createDocumentFragment() //創建一個DOM片段
createElement() //創建一個具體的元素
createTextNode() //創建一個文本節點
(2)添加、移除、替換、插入
appendChild()
removeChild()
replaceChild()
insertBefore() //在已有的子節點前插入一個新的子節點
(3)查找
getElementsByTagName() //通過標簽名稱
getElementsByName() //通過元素的Name屬性的值(IE容錯能力較強,會得到一個數組,其中包括id等于name值的)
getElementById() //通過元素Id,唯一性

js中可以通過下標取到json對象的值么?

// 對象沒有順序。如果只是需要key可以使用ES5的Object.keys返回對象的鍵組成的數組。
var jsonData={"key1":"value1","key2":"value2","key3":"value3"};
var result = Object.keys(jsonData);
console.log(result);

JavaScript的原型,原型鏈?有什么特點?

原型:
JavaScript的所有對象中都包含了一個 [proto] 內部屬性,這個屬性所對應的就是該對象的原型
JavaScript的函數對象,除了原型 [proto] 之外,還預置了 prototype 屬性
當函數對象作為構造函數創建實例時,該 prototype 屬性值將被作為實例對象的原型 [proto]。
原型鏈:
當一個對象調用的屬性/方法自身不存在時,就會去自己 [proto] 關聯的前輩 prototype 對象上去找
如果沒找到,就會去該 prototype 原型 [proto] 關聯的前輩 prototype 去找。依次類推,直到找到屬性/方法或 undefined 為止。從而形成了所謂的“原型鏈”
原型特點:
JavaScript對象是通過引用來傳遞的,當修改原型時,與之相關的對象也會繼承這一改變

call和apply的作用是什么?區別是什么?

call和apply的功能基本相同,都是實現繼承或者轉換對象指針的作用;
唯一不通的是前者參數是羅列出來的,后者是存到數組中的;
call或apply功能就是實現繼承的;與面向對象的繼承extends功能相似;但寫法不同;
語法:
.call(對象[,參數1,參數2,....]);//此地參數是指的是對象的參數,非方法的參數;
.apply(對象,參數數組)//參數數組的形式:[參數1,參數2,......]

Javascript如何實現繼承?

構造函數綁定:使用 call 或 apply 方法,將父對象的構造函數綁定在子對象上
function Cat(name,color){
 Animal.apply(this, arguments);
 this.name = name;
 this.color = color;
}
實例繼承:將子對象的 prototype 指向父對象的一個實例
Cat.prototype = new Animal();
Cat.prototype.constructor = Cat;
拷貝繼承:如果把父對象的所有屬性和方法,拷貝進子對象

function extend(Child, Parent) {

   var p = Parent.prototype;
   var c = Child.prototype;
   for (var i in p) {
    c[i] = p[i];
   }
   c.uber = p;
  }
原型繼承:將子對象的 prototype 指向父對象的 prototype

function extend(Child, Parent) {
    var F = function(){};
   F.prototype = Parent.prototype;
   Child.prototype = new F();
   Child.prototype.constructor = Child;
   Child.uber = Parent.prototype;
}

ES6 語法糖 extends:class ColorPoint extends Point {}

class ColorPoint extends Point {
   constructor(x, y, color) {
      super(x, y); // 調用父類的constructor(x, y)
      this.color = color;
   }
   toString() {
      return this.color + " " + super.toString(); // 調用父類的toString()
   }
}
談談this對象的理解

this 總是指向函數的直接調用者
如果有 new 關鍵字,this 指向 new 出來的實例對象
在事件中,this指向觸發這個事件的對象
IE下 attachEvent 中的this總是指向全局對象Window

JavaScript 有哪幾種創建對象的方式?

javascript創建對象簡單的說,無非就是使用內置對象或各種自定義對象,當然還可以用JSON;但寫法有很多種,也能混合使用。
//
(1)對象字面量的方式
person={firstname:"Mark",lastname:"Yun",age:25,eyecolor:"black"};
(2)用function來模擬無參的構造函數
function Person(){}
var person = new Person(); //定義一個function,如果使用new"實例化",該function可以看作是一個Class
person.name = "Xiaosong";
person.age = "23";
person.work = function() {
alert("Hello " + person.name);
}
person.work();
(3)用function來模擬參構造函數來實現(用this關鍵字定義構造的上下文屬性)
function Person(name,age,hobby) {
this.name = name; //this作用域:當前對象
this.age = age;
this.work = work;
this.info = function() {

  alert("我叫" + this.name + ",今年" + this.age + "歲,是個" + this.work); 

}
}
var Xiaosong = new Person("WooKong",23,"程序猿"); //實例化、創建對象
Xiaosong.info(); //調用info()方法
(4)用工廠方式來創建(內置對象)
var jsCreater = new Object();
jsCreater.name = "Brendan Eich"; //JavaScript的發明者
jsCreater.work = "JavaScript";
jsCreater.info = function() {
alert("我是"+this.work+"的發明者"+this.name);
}
jsCreater.info();
(5)用原型方式來創建
function Standard(){}
Standard.prototype.name = "ECMAScript";
Standard.prototype.event = function() {
alert(this.name+"是腳本語言標準規范");
}
var jiaoben = new Standard();
jiaoben.event();
(6)用混合方式來創建
function iPhone(name,event) {
this.name = name;
this.event = event;
}
iPhone.prototype.sell = function() {
alert("我是"+this.name+",我是iPhone5s的"+this.event+"~ haha!");
}
var SE = new iPhone("iPhone SE","官方翻新機");
SE.sell();

JS阻止冒泡和取消默認事件(默認行為)

js冒泡和捕獲是事件的兩種行為,使用event.stopPropagation()起到阻止捕獲和冒泡階段中當前事件的進一步傳播。使用event.preventDefault()可以取消默認事件
防止冒泡和捕獲
w3c的方法是e.stopPropagation(),IE則是使用e.cancelBubble = true
stopPropagation也是事件對象(Event)的一個方法,作用是阻止目標元素的冒泡事件,但是會不阻止默認行為。什么是冒泡事件?如在一個按鈕是綁定一個”click”事件,那么”click”事件會依次在它的父級元素中被觸發 。stopPropagation就是阻止目標元素的事件冒泡到父級元素
取消默認事件
w3c的方法是e.preventDefault(),IE則是使用e.returnValue = false;
preventDefault它是事件對象(Event)的一個方法,作用是取消一個目標元素的默認行為。既然是說默認行為,當然是元素必須有默認行為才能被取消,如果元素本身就沒有默認行為,調用當然就無效了。什么元素有默認行為呢?如鏈接,提交按鈕等。當Event 對象的 cancelable為false時,表示沒有默認行為,這時即使有默認行為,調用preventDefault也是不會起作用的

事件的三個階段

捕獲、目標、冒泡

介紹事件“捕獲”和“冒泡”執行順序和事件的執行次數?

按照W3C標準的事件:首是進入捕獲階段,直到達到目標元素,再進入冒泡階段
事件執行次數(DOM2-addEventListener):元素上綁定事件的個數
注意1:前提是事件被確實觸發
注意2:事件綁定幾次就算幾個事件,即使類型和功能完全一樣也不會“覆蓋”
事件執行順序:判斷的關鍵是否目標元素
非目標元素:根據W3C的標準執行:捕獲->目標元素->冒泡(不依據事件綁定順序)
目標元素:依據事件綁定順序:先綁定的事件先執行(不依據捕獲冒泡標準)
最終順序:父元素捕獲->目標元素事件1->目標元素事件2->子元素捕獲->子元素冒泡->父元素冒泡
注意:子元素事件執行前提 事件確實“落”到子元素布局區域上,而不是簡單的具有嵌套關系

在一個DOM上同時綁定兩個點擊事件:一個用捕獲,一個用冒泡。事件會執行幾次,先執行冒泡還是捕獲?

該DOM上的事件如果被觸發,會執行兩次(執行次數等于綁定次數)
如果該DOM是目標元素,則按事件綁定順序執行,不區分冒泡/捕獲
如果該DOM是處于事件流中的非目標元素,則先執行捕獲,后執行冒泡

事件的代理/委托

事件委托是指將事件綁定目標元素的到父元素上,利用冒泡機制觸發該事件
優點:
可以減少事件注冊,節省大量內存占用
可以將事件應用于動態添加的子元素上
缺點: 使用不當會造成事件在不應該觸發時觸發
示例:
ulEl.addEventListener("click", function(e){

var target = event.target || event.srcElement;
if(!!target && target.nodeName.toUpperCase() === "LI"){
    console.log(target.innerHTML);
}

}, false);

IE與火狐的事件機制有什么區別? 如何阻止冒泡?

IE只事件冒泡,不支持事件捕獲;火狐同時支持件冒泡和事件捕獲

同步和異步的區別?

同步的概念應該是來自于操作系統中關于同步的概念:不同進程為協同完成某項工作而在先后次序上調整(通過阻塞,喚醒等方式)。
同步強調的是順序性,誰先誰后;異步則不存在這種順序性。
//
同步:瀏覽器訪問服務器請求,用戶看得到頁面刷新,重新發請求,等請求完,頁面刷新,新內容出現,用戶看到新內容,進行下一步操作。
//
異步:瀏覽器訪問服務器請求,用戶正常操作,瀏覽器后端進行請求。等請求完,頁面不刷新,新內容也會出現,用戶看到新內容。

如何解決跨域問題?

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105482.html

相關文章

  • 你不能錯過的前端面試合集

    摘要:收集的一些前端面試題從面試題發現不足,進而查漏補缺,比通過面試更難得及各大互聯網公司前端筆試面試題篇及各大互聯網公司前端筆試面試題篇面試題個和個經典面試題前端開發面試題如何面試前端工程師很重要個變態題解析如何通過餓了么面試輕 收集的一些前端面試題 從面試題發現不足,進而查漏補缺,比通過面試更難得 1 BAT及各大互聯網公司2014前端筆試面試題--Html,Css篇 2 BAT...

    ninefive 評論0 收藏0
  • 你不能錯過的前端面試合集

    摘要:收集的一些前端面試題從面試題發現不足,進而查漏補缺,比通過面試更難得及各大互聯網公司前端筆試面試題篇及各大互聯網公司前端筆試面試題篇面試題個和個經典面試題前端開發面試題如何面試前端工程師很重要個變態題解析如何通過餓了么面試輕 收集的一些前端面試題 從面試題發現不足,進而查漏補缺,比通過面試更難得 1 BAT及各大互聯網公司2014前端筆試面試題--Html,Css篇 2 BAT...

    darkbaby123 評論0 收藏0
  • 前端最強面經匯總

    摘要:獲取的對象范圍方法獲取的是最終應用在元素上的所有屬性對象即使沒有代碼,也會把默認的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對于一個光禿禿的元素,方法返回對象中屬性值如果有就是據我測試不同環境結果可能有差異而就是。 花了很長時間整理的前端面試資源,喜歡請大家不要吝嗇star~ 別只收藏,點個贊,點個star再走哈~ 持續更新中……,可以關注下github 項目地址 https:...

    wangjuntytl 評論0 收藏0
  • 前端開發面試鏈接

    摘要:手冊網超級有用的前端基礎技術面試問題收集前端面試題目及答案匯總史上最全前端面試題含答案常見前端面試題及答案經典面試題及答案精選總結前端面試過程中最容易出現的問題前端面試題整理騰訊前端面試經驗前端基礎面試題部分最新前端面試題攻略前端面試前端入 手冊網:http://www.shouce.ren/post/index 超級有用的前端基礎技術面試問題收集:http://www.codec...

    h9911 評論0 收藏0
  • 前端開發面試鏈接

    摘要:手冊網超級有用的前端基礎技術面試問題收集前端面試題目及答案匯總史上最全前端面試題含答案常見前端面試題及答案經典面試題及答案精選總結前端面試過程中最容易出現的問題前端面試題整理騰訊前端面試經驗前端基礎面試題部分最新前端面試題攻略前端面試前端入 手冊網:http://www.shouce.ren/post/index 超級有用的前端基礎技術面試問題收集:http://www.codec...

    snifes 評論0 收藏0

發表評論

0條評論

Baoyuan

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<