zoukankan      html  css  js  c++  java
  • call,apply,bind,this

    1.this:js的this总是指向一个对象,具体那个对象是运行时基于函数的执行环境动态绑定的,而非函数声明时的环境。   

         this的指向(除去eavl和with):

          a.作为对象的方法调用 :this指向对象本身

          b.作为普通函数调用(函数自执行,匿名函数) :this指向window对象

          c.构造器调用

          d.apply,call调用。

    2.自定义封装document.getElementById

        var  getId = document.getElementById;

        var div = getId("div");//本身期望this指向的是document,但是经此调用函数执行指向window;

      修改:

        document.getElementById = (function(fuc){

          return function(){

            return fuc.apply(document.getElementById,arguments)

          }

        })(document.getElementById)

        var getId = document.getElementById;

        var div = getId("div");//this执行document

    3.call,apply

      都是改变this指向,参数不同,第一个都是this指向的对象,第二个参数为参数。apply为数组,call随便,偏向apply

      当第一个参数为null时。函数体this默认指向宿主对象。浏览器中指向window

  • 相关阅读:
    20141124-JS函数
    20141124-JS 变量,数据类型
    20141124-HTML-JavaScrilpt
    ●查询语句
    ●SQL2008基础
    ●数据库入门、更改验证方式
    ●枚举、递归
    ●值类型、引用类型
    小游戏●两人对战
    小游戏●贪吃蛇1(利用二维数组制作)
  • 原文地址:https://www.cnblogs.com/tutao1995/p/10509080.html
Copyright © 2011-2022 走看看