成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端面試基本知識(shí)點(diǎn)——javascript

hankkin / 1168人閱讀

摘要:又到一年春招季,們又要奔波于一場(chǎng)又一場(chǎng)的面試。今天就先來小小總結(jié)一下方面的知識(shí)點(diǎn),方便你我他。在發(fā)送請(qǐng)求前加上。在后面加上時(shí)間搓。這樣頁面的所有都會(huì)執(zhí)行這條語句就是不需要保存緩存記錄。如何解決跨域問題服務(wù)器上設(shè)置代理頁面

又到一年春招季,coder們又要奔波于一場(chǎng)又一場(chǎng)的面試。今天就先來小小總結(jié)一下javascript方面的知識(shí)點(diǎn),方便你我他。隨時(shí)補(bǔ)充

js基本數(shù)據(jù)類型

Undefined、Null、Boolean、Number、String
ECMAScript2015新增了Symbol(創(chuàng)建后獨(dú)一無二的數(shù)據(jù)類型)

js的內(nèi)置對(duì)象

數(shù)據(jù)封裝對(duì)象:Object,Array,Boolean,Number,String
其他對(duì)象:Function,Arguments,Math,Date,RegExp,Error

js基本規(guī)范

1.不要在同一行聲明多個(gè)變量
2.請(qǐng)使用===/!==來比較Boolean或者數(shù)值
3.生命數(shù)組變量時(shí),盡量使用[]代替new Array
4.拒絕全局函數(shù)
5.Switch語句必須帶有default分支

js原型,原型鏈及其特點(diǎn)

每個(gè)對(duì)象都會(huì)有一個(gè)內(nèi)部初始化的屬性,就是原型(prototype),當(dāng)我們尋找一個(gè)對(duì)象的屬性,如果內(nèi)部屬性本身不存在,就到對(duì)象的原型里面去找,這個(gè)原型又會(huì)有自己的原型,就這樣一步步地找下去,這就是所謂的原型鏈。

Javascript有幾種類型的值?及關(guān)于他們的內(nèi)存圖

棧:原始數(shù)據(jù)類型(基本數(shù)據(jù)類型)
堆:引用數(shù)據(jù)類型(對(duì)象,數(shù)組,函數(shù))
兩種類型的區(qū)別:儲(chǔ)存的位置不同

將字符串轉(zhuǎn)換為數(shù)字?

1.‘12.3b’ parseFloat("12.3b");解析成浮點(diǎn)數(shù)
2."12b"   parseInt("12b");解析成整數(shù)

如何將浮點(diǎn)數(shù)小數(shù)點(diǎn)左邊的每三位添加一個(gè)逗號(hào)

    function commafy(num){
       return num && num
                     .toString()
                     .replace(/(d)(?=(d{3})+./g,function($1, $2){
                     return $2 + ",";
                     });
    }

如何實(shí)現(xiàn)數(shù)組的隨機(jī)排序?var arr = [1,2,3,4,5,6,7,8]

方法一
    
    function RandomSort(arr){
    for (var i = 0,len = arr.length;i < len;i++){
       var rand = parseInt(Math.random() * len);
        var a;
        a = arr[rand]; 
        arr[rand]  = arr[i];
        arr[i] = a;
    } 
     return arr;   
    }
        
方法二
    
    function RandomSort2(arr){
    var a = [];
    while(arr.length > 0){
    var rand = parseInt(Math.random() * arr.length);
    a.push(arr[rand]);
    arr.splice(rand,1);
    }
     return a;   
    }
        
方法三
    
    function RandomSort3(arr){
     function sortBy(){
         return Math.random() - 0.5;
     }
     arr.sort(sortBy());
    }
        

Javascript如何實(shí)現(xiàn)繼承?
1.構(gòu)造繼承
2.原型繼承
3.實(shí)力繼承
4.拷貝繼承
前兩種比較簡(jiǎn)單,建議用前兩種的組合方式
1.構(gòu)造函數(shù)實(shí)現(xiàn)繼承就是借助call或者apply把父類中的函數(shù)通過this指復(fù)制到子類創(chuàng)建的實(shí)例中。

function Parent() {
  this.colors = ["black","white"];
}
function Child() {
  Parent.call(this);
}
var child1 = new Child();
alert(child1.colors);//"black,white"

2.原型函數(shù)實(shí)現(xiàn)繼承

function Parent(){
        this.name = "liuwen";
    }

    function Child(){
        this.age = 28;
    }
    Child.prototype = new Parent();//繼承了Parent,通過原型

    var demo = new Child();
    alert(demo.age);
    alert(demo.name);//得到被繼承的屬性

javascript創(chuàng)建對(duì)象的幾種方法
1.使用對(duì)象字面量

 var Cat  = {};//JSON
 Cat.name="kity";//添加屬性并賦值
 Cat.age=2;
 Cat.sayHello=function(){
  alert("hello "+Cat.name+",今年"+Cat["age"]+"歲了");//可以使用“.”的方式訪問屬性,也可以使用HashMap的方式訪問
 }
 Cat.sayHello();//調(diào)用對(duì)象的(方法)函數(shù)
2.用function來模擬無參的構(gòu)造函數(shù)
function Person(){
   }
   var personOne=new Person();//定義一個(gè)function,如果有new關(guān)鍵字去"實(shí)例化",那么該function可以看作是一個(gè)類
   personOne.name="liuwen";
   personOne.hobby="coding";
   personOne.work=function(){
   alert(personOne.name+" is coding now...");
   }
   personOne.work();
3.用function來模擬有參構(gòu)造函數(shù)(拓展性強(qiáng),推薦使用)
function Pet(name,age,hobby){
  this.name=name;//this作用域:當(dāng)前對(duì)象
  this.age=age;
  this.hobby=hobby;
  this.eat=function(){
     alert("我叫"+this.name+",我喜歡"+this.hobby+",也是個(gè)吃貨");
  }
   }
   var maidou =new Pet("麥兜",5,"睡覺");//實(shí)例化/創(chuàng)建對(duì)象
maidou.eat();//調(diào)用eat方法(函數(shù))
4.用工廠模式來創(chuàng)建(內(nèi)置對(duì)象Object)
var liuWen = new Object();
liuWen.name = "劉雯";
liuWen.age = 21;
liuWen.work = function() {
  alert("i am" + liuWen.name);
}
liuWen.work();
5.用原型方式來創(chuàng)建
function Dog(){

}
Dog.prototype.name="旺財(cái)";
Dog.prototype.eat=function(){
alert(this.name+"是個(gè)吃貨");
}
var liuwen =new Dog();
liuwen.eat();
6.用混合模式創(chuàng)建
function Car(name,price){
 this.name=name;
 this.price=price;
   }
Car.prototype.sell=function(){
  alert("我是"+this.name+",我現(xiàn)在賣"+this.price+"萬元");
 }
   var camry =new Car("liuwen",27);
   camry.sell();

this的理解

this指的是函數(shù)的直接調(diào)用者

this指的是new出來的實(shí)例對(duì)象

this指的是事件中觸發(fā)事件的對(duì)象

特殊的,在IE的attachEvent中,this總是指全局對(duì)象window

什么是window對(duì)象?什么是document對(duì)象?

   window指的是瀏覽器窗口;document是文檔(html),屬于window的一個(gè)屬性。

null和undefined的區(qū)別

   null是一個(gè)空值,表示一個(gè)對(duì)象為空值(我是空的)
   undefined表示一個(gè)聲明過的變量沒有賦予值(不知道我是誰)
   typeOf undefined;//"undefined"
   typeOf null; //"object"
   區(qū)別null和undefined用===;

事件是什么?火狐和IE事件機(jī)制的區(qū)別?以及如何阻止冒泡事件

事件是在網(wǎng)頁中的某個(gè)操作,類似于(點(diǎn)擊,鍵盤)

IE是事件冒泡,火狐事件捕獲,事件冒泡都支持(事件冒泡是由子節(jié)點(diǎn)到父節(jié)點(diǎn)層層向外,捕獲剛好相反);

阻止冒泡事件 event.stopPropagation();

什么是閉包?為什么要用它

   閉包就是有權(quán)訪問另一個(gè)函數(shù)作用域的函數(shù),簡(jiǎn)單來做就是在一個(gè)函數(shù)的內(nèi)部創(chuàng)建另外一個(gè)函數(shù),通過這個(gè)內(nèi)部函數(shù)訪問外部函數(shù)的局部變量,將外部函數(shù)內(nèi)部的方法變量傳遞到外部。   
   閉包的特性:
   1. 內(nèi)部函數(shù)有權(quán)訪問外部函數(shù)的作用域,變量及函數(shù)
   2. 函數(shù)內(nèi)再嵌套函數(shù)
   3. 變量和函數(shù)不會(huì)被垃圾回收制回收
//li節(jié)點(diǎn)的onclick事件都能正確的彈出當(dāng)前被點(diǎn)擊的li索引
  • index = 0
  • index = 1
  • index = 2
  • index = 3
執(zhí)行say667()后,say667()閉包內(nèi)部變量會(huì)存在,而閉包內(nèi)部函數(shù)的內(nèi)部變量不會(huì)存在 使得Javascript的垃圾回收機(jī)制GC不會(huì)收回say667()所占用的資源 因?yàn)閟ay667()的內(nèi)部函數(shù)的執(zhí)行需要依賴say667()中的變量 這是對(duì)閉包作用的非常直白的描述 function say667() { // Local variable that ends up within closure var num = 666; var sayAlert = function() { alert(num); } num++; return sayAlert; } var sayAlert = say667(); sayAlert()//執(zhí)行結(jié)果應(yīng)該彈出的667

Javascript中,有一個(gè)函數(shù),執(zhí)行時(shí)對(duì)象查找時(shí),永遠(yuǎn)不會(huì)去查找原型,這個(gè)函數(shù)是?

   hasOwnProperty
   javascript的hasOwnProperty返回的是一個(gè)布爾值,它可以檢測(cè)到這個(gè)對(duì)象本身具有屬性,不能檢測(cè)到原型鏈上。
   object.hasOwnProperty(proName)
   其中參數(shù)object是必選項(xiàng)。一個(gè)對(duì)象的實(shí)例。
   proName是必選項(xiàng)。一個(gè)屬性名稱的字符串值。

JSON的了解

   JSON是javascript的一個(gè)子集,它是輕量級(jí),簡(jiǎn)單,易操作的數(shù)據(jù)交換格式。
   1. 將JSON字符串轉(zhuǎn)化為JSON對(duì)象;
   var obj =eval("("+ str +")");
   var obj = str.parseJSON();
   var obj = JSON.parse(str);
   2. JSON對(duì)象轉(zhuǎn)換為JSON字符串:
   var str=obj.toJSONString();
   var str=JSON.stringify(obj);

js延遲加載

   defer和async,動(dòng)態(tài)創(chuàng)建dom(最常用),按需異步載入js

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

   向服務(wù)器發(fā)送請(qǐng)求的時(shí)候我們不必等待,可以同時(shí)做其他事情,頁面也不會(huì)整頁刷新,提高用戶效率。
   (1)創(chuàng)建XMLHttpRequest對(duì)象,也就是創(chuàng)建一個(gè)異步調(diào)用對(duì)象
   (2)創(chuàng)建一個(gè)新的HTTP請(qǐng)求,并指定該HTTP請(qǐng)求的方法、URL及驗(yàn)證信息
   (3)設(shè)置響應(yīng)HTTP請(qǐng)求狀態(tài)變化的函數(shù)
   (4)發(fā)送HTTP請(qǐng)求
   (5)獲取異步調(diào)用返回的數(shù)據(jù)
   (6)使用JavaScript和DOM實(shí)現(xiàn)局部刷新   

Ajax 解決瀏覽器緩存問題?

   1、在ajax發(fā)送請(qǐng)求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0")。
   
   2、在ajax發(fā)送請(qǐng)求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache")。
   
   3、在URL后面加上一個(gè)隨機(jī)數(shù): "fresh=" + Math.random();。
   
   4、在URL后面加上時(shí)間搓:"nowtime=" + new Date().getTime();。
   
   5、如果是使用jQuery,直接這樣就可以了 $.ajaxSetup({cache:false})。這樣頁面的所有ajax都會(huì)執(zhí)行這條語句就是不需要保存緩存記錄。

如何解決跨域問題?

   jsonp、 iframe、window.name、window.postMessage、服務(wù)器上設(shè)置代理頁面

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/81919.html

相關(guān)文章

  • 前端開發(fā)-從入門到Offer - 收藏集 - 掘金

    摘要:一些知識(shí)點(diǎn)有哪些方法方法前端從入門菜鳥到實(shí)踐老司機(jī)所需要的資料與指南合集前端掘金前端從入門菜鳥到實(shí)踐老司機(jī)所需要的資料與指南合集歸屬于筆者的前端入門與最佳實(shí)踐。 工欲善其事必先利其器-前端實(shí)習(xí)簡(jiǎn)歷篇 - 掘金 有幸認(rèn)識(shí)很多在大廠工作的學(xué)長(zhǎng),在春招正式開始前為我提供很多內(nèi)部推薦的機(jī)會(huì),非常感謝他們對(duì)我的幫助?,F(xiàn)在就要去北京了,對(duì)第一份正式的實(shí)習(xí)工作也充滿期待,也希望把自己遇到的一些問題和...

    sf_wangchong 評(píng)論0 收藏0
  • Deep in JS - 收藏集 - 掘金

    摘要:今天同學(xué)去面試,做了兩道面試題全部做錯(cuò)了,發(fā)過來給道典型的面試題前端掘金在界中,開發(fā)人員的需求量一直居高不下。 排序算法 -- JavaScript 標(biāo)準(zhǔn)參考教程(alpha) - 前端 - 掘金來自《JavaScript 標(biāo)準(zhǔn)參考教程(alpha)》,by 阮一峰 目錄 冒泡排序 簡(jiǎn)介 算法實(shí)現(xiàn) 選擇排序 簡(jiǎn)介 算法實(shí)現(xiàn) ... 圖例詳解那道 setTimeout 與循環(huán)閉包的經(jīng)典面...

    enali 評(píng)論0 收藏0
  • 面試寶典

    摘要:有談?wù)劽嬖嚺c面試題對(duì)于前端面試的一些看法。動(dòng)態(tài)規(guī)劃算法的思想及實(shí)現(xiàn)方法幫大家理清動(dòng)態(tài)規(guī)劃的解決思路以及原理方法前端經(jīng)典面試題從輸入到頁面加載發(fā)生了什么這是一篇開發(fā)的科普類文章,涉及到優(yōu)化等多個(gè)方面。極客學(xué)院前端練習(xí)題道練習(xí)題,面試季練練手。 由數(shù)據(jù)綁定和排序引入的幾個(gè) JavaScript 知識(shí)點(diǎn) 在 JavaScript 的數(shù)據(jù)綁定和做簡(jiǎn)單的表格排序中遇到的幾個(gè)知識(shí)點(diǎn) [[JS 基礎(chǔ)...

    neu 評(píng)論0 收藏0
  • 前端識(shí)點(diǎn)整理

    摘要:難怪超過三分之一的開發(fā)人員工作需要一些知識(shí)。但是隨著行業(yè)的飽和,初中級(jí)前端就業(yè)形勢(shì)不容樂觀。整個(gè)系列的文章大概有篇左右,從我是如何成為一個(gè)前端工程師,到各種前端框架的知識(shí)。 為什么 call 比 apply 快? 這是一個(gè)非常有意思的問題。 作者會(huì)在參數(shù)為3個(gè)(包含3)以內(nèi)時(shí),優(yōu)先使用 call 方法進(jìn)行事件的處理。而當(dāng)參數(shù)過多(多余3個(gè))時(shí),才考慮使用 apply 方法。 這個(gè)的原因...

    Lowky 評(píng)論0 收藏0
  • 前端識(shí)點(diǎn)整理

    摘要:難怪超過三分之一的開發(fā)人員工作需要一些知識(shí)。但是隨著行業(yè)的飽和,初中級(jí)前端就業(yè)形勢(shì)不容樂觀。整個(gè)系列的文章大概有篇左右,從我是如何成為一個(gè)前端工程師,到各種前端框架的知識(shí)。 為什么 call 比 apply 快? 這是一個(gè)非常有意思的問題。 作者會(huì)在參數(shù)為3個(gè)(包含3)以內(nèi)時(shí),優(yōu)先使用 call 方法進(jìn)行事件的處理。而當(dāng)參數(shù)過多(多余3個(gè))時(shí),才考慮使用 apply 方法。 這個(gè)的原因...

    snowLu 評(píng)論0 收藏0
  • 前端經(jīng)典文章

    摘要:上周末看這篇文章時(shí),偶有靈光,所以,分享出來給大家一起看看前端面試四月二十家前端面試題分享請(qǐng)各位讀者添加一下作者的微信公眾號(hào),以后有新的文章,將在微信公眾號(hào)直接推送給各位,非常感謝。 前端切圖神器 avocode 有了這個(gè)神器,切圖再也腰不酸,腿不疼了。 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果讀完本文還不懂,...

    lowett 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

hankkin

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<