0%

javascript零碎知识

1.闭包概念

理解闭包的前提:当某个函数被调用时,会创建一个执行环境及相应的作用域链。然后使用arguments和其他命名参数的值来初始化函数的活动对象。但在作用域链中,外部函数的活动对象始终处于第二位,外部函数的外部函数处于第三位,…直至作为作用域重点的全局执行环境。

2.使用new调用函数或者说发送构造函数调用会自动执行以下操作

  1. 创建一个全新的对象。
  2. 这个新对象会被执行[[原型]]连接。
  3. 这个新对象会绑定到函数调用的this。
  4. 如果函数没有返回其他对象,那么new表达式中的函数调用回自动返回这个对象。

3.js严格模式下this的指向

  1. 全局作用域中的this
    在严格模式下,在全局作用域中,this指向window对象,在函数中的this等于undefined
  2. 对象的函数(方法)中的this
    在严格模式下,对象的函数(方法)中的this指向调用函数的对象实例
  3. 构造函数的this
    在严格模式下,构造函数中的this指向构造函数创建的对象实例
  4. 事件处理函数中的this
    在严格模式下,在事件处理函数中,this指向触发事件的目标对象
    例:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function blue_it(e){
    if(this === e.target){
    this.style.backgroundColor = "#00f";
    }
    }
    var elements = document.getElementsByTagName('*');
    for(var i=0 ; i<elements.length ; i++){
    elements[i].onclick = blue_it;
    }
    //这段代码的作用是使被单击的元素背景色变为蓝色