• JS(五)


    ● js判断类型

    判断方法:typeof(),instanceof,Object.prototype.toString.call()

    ● 数组常用方法

    push(),pop(),shift(),unshift(),splice(),sort(),reverse(),map()等

    ● 数组去重

    1. 法一:indexOf循环去重
    2. 法二:ES6 Set去重;Array.from(new Set(array))
    3. 法三:Object 键值对去重;把数组的值存成 Object 的 key 值,比如 Object[value1] = true,在判断另一个值的时候,如果 Object[value2]存在的话,就说明该值是重复的。

    ● 闭包 有什么用

    (1)什么是闭包:

    闭包是指有权访问另外一个函数作用域中的变量的函数。

    闭包就是函数的局部变量集合,只是这些局部变量在函数返回后会继续存在。闭包就是就是函数的“堆栈”在函数返回后并不释放,我们也可以理解为这些函数堆栈并不在栈上分配而是在堆上分配。当在一个函数内定义另外一个函数就会产生闭包。

    (2)为什么要用:

    匿名自执行函数:我们知道所有的变量,如果不加上var关键字,则默认的会添加到全局对象的属性上去,这样的临时变量加入全局对象有很多坏处,比如:别的函数可能误用这些变量;造成全局对象过于庞大,影响访问速度(因为变量的取值是需要从原型链上遍历的)。除了每次使用变量都是用var关键字外,我们在实际情况下经常遇到这样一种情况,即有的函数只需要执行一次,其内部变量无需维护,可以用闭包。

    结果缓存:我们开发中会碰到很多情况,设想我们有一个处理过程很耗时的函数对象,每次调用都会花费很长时间,那么我们就需要将计算出来的值存储起来,当调用这个函数的时候,首先在缓存中查找,如果找不到,则进行计算,然后更新缓存并返回值,如果找到了,直接返回查找到的值即可。闭包正是可以做到这一点,因为它不会释放外部的引用,从而函数内部的值可以得以保留。

    封装:实现类和继承等。

    ● 事件代理在捕获阶段的实际应用

    可以在父元素层面阻止事件向子元素传播,也可代替子元素执行某些操作。

    ● 你说到typeof,能不能加一个限制条件达到判断条件

    typeof只能判断是object,可以判断一下是否拥有数组的方法

    ● this的指向 哪几种

    默认绑定:全局环境中,this默认绑定到window。
    隐式绑定:一般地,被直接对象所包含的函数调用时,也称为方法调用,this隐式绑定到该直接对象。

    隐式丢失:隐式丢失是指被隐式绑定的函数丢失绑定对象,从而默认绑定到window。显式绑定:通过call()、apply()、bind()方法把对象绑定到this上,叫做显式绑定。

    new绑定:如果函数或者方法调用之前带有关键字new,它就构成构造函数调用。对于this绑定来说,称为new绑定。

    【1】构造函数通常不使用return关键字,它们通常初始化新对象,当构造函数的函数体执行完毕时,它会显式返回。在这种情况下,构造函数调用表达式的计算结果就是这个新对象的值。

    【2】如果构造函数使用return语句但没有指定返回值,或者返回一个原始值,那么这时将忽略返回值,同时使用这个新对象作为调用结果。

    【3】如果构造函数显式地使用return语句返回一个对象,那么调用表达式的值就是这个对象。

    ● 暂停死区

    在代码块内,使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”

    ● 说一下什么是virtual dom

    用JavaScript 对象结构表示 DOM 树的结构;然后用这个树构建一个真正的 DOM 树,插到文档当中 当状态变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较,记录两棵树差异 把所记录的差异应用到所构建的真正的DOM树上,视图就更新了。Virtual DOM 本质上就是在 JS 和 DOM 之间做了一个缓存。

    ● 写一个函数,第一秒打印1,第二秒打印2

    第一个是用let块级作用域

    for(let i=0;i<5;i++){
    setTimeout(function(){
    console.log(i)
    },1000*i)
    }
    

    第二个方法闭包

    for(var i=0;i<5;i++){
    (function(i){
    setTimeout(function(){
    console.log(i)
    },1000*i)
    })(i)
    }
    
  • 相关阅读:
    python的装饰器
    闭包的概念
    py3.x和py2.x的区别
    python在WIN下CMD运行中文乱码及python 2.x python 3.x编码问题
    python 中文乱码问
    字符编码
    第03章 科学计算库Numpy
    《数据结构与算法》-哈希查找算法
    python寻找小于给定值的最大质数
    《数据结构与算法》-6-七大查找算法-1
  • 原文地址:https://www.cnblogs.com/jackson1/p/13888847.html
Copyright © 2020-2023  润新知