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

  • 相关阅读:
    tomcat配置虚拟主机
    android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)
    Delphi 2007体验!
    ACE定时器
    Unity--关于优化方面的那些事儿(一)
    LTP介绍
    Java正則表達式入门
    Spring整合Hibernate的步骤
    ThreadPool.QueueUserWorkItem的性能问题
    用Bootstrap 写了个站点
  • 原文地址:https://www.cnblogs.com/tutao1995/p/10509080.html
Copyright © 2011-2022 走看看