zoukankan      html  css  js  c++  java
  • js部分基础

    1.js的基本类型有哪些?引用类型有哪些?null和undefined的区别。

      基础类型:number,null,regex,string,boolean
    
      引用类型 : object,function,array  
      null是数据类型,undefined未定义
    

      

    2.如何判断一个变量是Array类型?

      array:Object.prototype.toString.call(obj)  [object Array]
    

      

    3.引用类型和基本类型的区别

      引用类型:堆内存,是二级缓存,保存一个指针,指向另一个内存,如果程序不结束或者没有手动释放,则不释放
    
      基本类型:栈内存,是一级缓存,由系统分配或者释放。
    

      

    4.事件委托(手写例子)

    <div id='parent'></div>
    <script>
        function delegate(dom,type,fn){
          document.body.click(function(e){
              if(e.target = dom){
                  fn(e)
              }
          })
        }
    <script>            
    

      

    5.对闭包的理解,闭包的优缺点?

      闭包:一个可以让外部访问的函数。消耗内存
    

      

    6.改变this的几种方法?

      call , apply , bind
    

      

    7.显式和隐式原型

      显式原型:prototype , Function是一个Object,Function有一个属性prototype,它是一个指针,指向一个对象。这个对象有construsctor属性
    
      隐式原型:_proto_ ,指向创建这个对象的函数的prototype,一个指针指向一个对象。
    

      

    8.创建对象的多种方式

    //字面量
    var obj = {name:'test'}
    
    //构造函数
    var obj = new Object({name:''})
    

      

    9.实现继承的多种方式和优缺点

    //原型链
    function Parent(){
       this.name=''  
    }
    function Son(){}
    Son.prototype = new Parent()
    
    //创建新对象
    var son = Object.create(new Parent())
    
    //call,apply
    function Son(){
       Parent.call(this,'')
    }

    //es6
    class Son extends Person{}

      

    10.变量提升

        var  value = 1;
      var  test  =  function(){
        console.log(value)
        var value =  2;
      }
      test()
      function test(){
        console.log(value+1)
      }
      test();     
        // undefined , undefined
     
    

      

    11.匿名函数

    (function(){
        alert('test')
    })()
    

      

    12.NaN != NaN,false != null

    13.new 一个对象的过程

    function ClassName (option){
        console.log(option)  
    }
    ClassName.prototype.say=function(){}
    
    
    let obj = new ClassName({})
    
    
    1.创建一个对象,传入原型 lo = Object.create(ClassName.prototype) 
    2.执行当前函数,并且this执行 newObj = ClassName.call(o)
    3. 返回新的对象 newObj

      

     14.实现一个bing函数

    //bings函数
    Function.prototype.binds = function () {
        var args = [].slice.call(arguments,1),target = arguments[0]
        return this.apply(target,args)
    }
    function tesa(a,b) {
        console.log(this,a+b)
        return a+b
    }
    console.log(tesa.binds({a:1},1,2))
    

      

      

  • 相关阅读:
    Object-C 类
    POJ 2128:Highways
    默认连接电脑的模式为MTP【转】
    java.lang.ClassFormatError Duplicate field name&signature in class file XXXXXX【转】
    吴恩达机器学习--单变量线性回归【学习笔记】
    用代码实现断开Android手机USB连接【转】
    Android系统属性SystemProperties在应用层的用法【转】
    [RK3288][Android6.0] 调试笔记 --- user版本默认显示开发者选项【转】
    如何彻底禁止手机连接usb,代码实…【转】
    Android关闭USB的ADB调试和文件传输功能(禁用USB)【转】
  • 原文地址:https://www.cnblogs.com/jiebba/p/7716278.html
Copyright © 2011-2022 走看看