zoukankan      html  css  js  c++  java
  • js中的call()、apply()、bind()

    js中的一个核心概念就是对this的理解,关于this前面也有说过,不过在有些情况下,还是需要手动去改变this的指向,这里总结一下,js中关于this操作的三种方法

    • call()
    • apply()
    • bind()

    这三个方法都是Function中的内置函数,一个函数调用call、apply、bind回去原型链中线上寻找这三个方法,这三个方法都用于改变this的指向问题,虽然他们作用相同,作为三种不同的方法,他们之间依然有一些差别

    1. function.call(obj,val1,val2);   // obj对象将代替function中的this,并且往function中传入val1和val2,并且call的同时,function函数执行
    2. function.apply(obj,[val1,val2]);   // obj对象将代替function中的this,并且往function中传入val1和val2,传入的参数为数组形式,并且apply的同时,function函数执行
    3. function.bind(obj,val1,val2);   // obj对象将代替function中的this,并且往function中传入val1和val2,bind的同时,function函数不执行

    1、基本应用

    看以下代码

    默认状态下this指向window对象,当传入的值为空、null或者undefined的时候,this也是指向window对象,其余传入的基本类型值,this均指向传入值本身

    2、在对象继承及传参时的应用

    同样直接看代码

    从上面的代码中可以看出,call、apply、bind三者之间的差别

    call和apply用法基本相同,只是传参的方式不同而已,call是一个一个的传值,apply则传入一个数组

    bind方法的传参方式同call类似,但是bind修改了this指向之后并不会马上起作用,需要调用以下才可以

  • 相关阅读:
    真不容易...终于我也有了个js的语法高亮
    持久层相关概念
    测试语法高亮显示
    BSTR简介和内部结构
    Debugging JavaScript in Your Applications
    Google Analytics 跟踪代码迁移手册
    我对事件驱动的理解
    imagettftext 可调整字间距输出
    投票机的实现及相关技术
    js光标定位到文本末尾
  • 原文地址:https://www.cnblogs.com/gaosong-shuhong/p/10075567.html
Copyright © 2011-2022 走看看