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

資訊專欄INFORMATION COLUMN

前端面試基本知識點——javascript

hankkin / 1148人閱讀

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

又到一年春招季,coder們又要奔波于一場又一場的面試。今天就先來小小總結一下javascript方面的知識點,方便你我他。隨時補充

js基本數據類型

Undefined、Null、Boolean、Number、String
ECMAScript2015新增了Symbol(創建后獨一無二的數據類型)

js的內置對象

數據封裝對象:Object,Array,Boolean,Number,String
其他對象:Function,Arguments,Math,Date,RegExp,Error

js基本規范

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

js原型,原型鏈及其特點

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

Javascript有幾種類型的值?及關于他們的內存圖

棧:原始數據類型(基本數據類型)
堆:引用數據類型(對象,數組,函數)
兩種類型的區別:儲存的位置不同

將字符串轉換為數字?

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

如何將浮點數小數點左邊的每三位添加一個逗號

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

如何實現數組的隨機排序?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如何實現繼承?
1.構造繼承
2.原型繼承
3.實力繼承
4.拷貝繼承
前兩種比較簡單,建議用前兩種的組合方式
1.構造函數實現繼承就是借助call或者apply把父類中的函數通過this指復制到子類創建的實例中。

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

2.原型函數實現繼承

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創建對象的幾種方法
1.使用對象字面量

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

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

this的理解

this指的是函數的直接調用者

this指的是new出來的實例對象

this指的是事件中觸發事件的對象

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

什么是window對象?什么是document對象?

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

null和undefined的區別

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

事件是什么?火狐和IE事件機制的區別?以及如何阻止冒泡事件

事件是在網頁中的某個操作,類似于(點擊,鍵盤)

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

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

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

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

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

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

JSON的了解

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

js延遲加載

   defer和async,動態創建dom(最常用),按需異步載入js

Ajax是什么?如何創建Ajax?

   向服務器發送請求的時候我們不必等待,可以同時做其他事情,頁面也不會整頁刷新,提高用戶效率。
   (1)創建XMLHttpRequest對象,也就是創建一個異步調用對象
   (2)創建一個新的HTTP請求,并指定該HTTP請求的方法、URL及驗證信息
   (3)設置響應HTTP請求狀態變化的函數
   (4)發送HTTP請求
   (5)獲取異步調用返回的數據
   (6)使用JavaScript和DOM實現局部刷新   

Ajax 解決瀏覽器緩存問題?

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

如何解決跨域問題?

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

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

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

相關文章

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

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

    sf_wangchong 評論0 收藏0
  • Deep in JS - 收藏集 - 掘金

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

    enali 評論0 收藏0
  • 面試寶典

    摘要:有談談面試與面試題對于前端面試的一些看法。動態規劃算法的思想及實現方法幫大家理清動態規劃的解決思路以及原理方法前端經典面試題從輸入到頁面加載發生了什么這是一篇開發的科普類文章,涉及到優化等多個方面。極客學院前端練習題道練習題,面試季練練手。 由數據綁定和排序引入的幾個 JavaScript 知識點 在 JavaScript 的數據綁定和做簡單的表格排序中遇到的幾個知識點 [[JS 基礎...

    neu 評論0 收藏0
  • 前端識點整理

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

    Lowky 評論0 收藏0
  • 前端識點整理

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

    snowLu 評論0 收藏0
  • 前端經典文章

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

    lowett 評論0 收藏0

發表評論

0條評論

hankkin

|高級講師

TA的文章

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