前端口试基础知识点——javascript

又到一年春招季,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索引
    <ul id="testUL">
       <li> index = 0</li>
       <li> index = 1</li>
       <li> index = 2</li>
       <li> index = 3</li>
    </ul>
    <script type="text/javascript">
       var nodes = document.getElementsByTagName("li");
       for(i = 0;i<nodes.length;i+= 1){
    nodes[i].onclick = (function(i){
              return function() {
                 console.log(i);
              } //没必要闭包的话,值每次都是4
            })(i);
       }
    </script>
    
    
    
    实行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、服务器上设置代办页面
    原文作者:刘雯
    原文地址: https://segmentfault.com/a/1190000008574674
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞