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

  • 相关阅读:
    Leetcode 349. Intersection of Two Arrays
    hdu 1016 Prime Ring Problem
    map 树木品种
    油田合并
    函数学习
    Leetcode 103. Binary Tree Zigzag Level Order Traversal
    Leetcode 102. Binary Tree Level Order Traversal
    Leetcode 101. Symmetric Tree
    poj 2524 Ubiquitous Religions(宗教信仰)
    pat 1009. 说反话 (20)
  • 原文地址:https://www.cnblogs.com/tutao1995/p/10509080.html
Copyright © 2011-2022 走看看