zoukankan      html  css  js  c++  java
  • js this

    在JavaScript中,callapplybindFunction对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向。

    bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。

    一、call

    call()
    语法:

    call([thisObj[,arg1[, arg2[, [,.argN]]]]])

    定义:调用一个对象的一个方法,以另一个对象替换当前对象。

    说明: call 方法可以用来代替另一个对象调用一个方法。
    call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。

    thisObj的取值有以下4种情况:
    (1) 不传,或者传null,undefined, 函数中的this指向window对象
    (2) 传递另一个函数的函数名,函数中的this指向这个函数的引用
    (3) 传递字符串、数值或布尔类型等基础类型,函数中的this指向其对应的包装对象,如 String、Number、Boolean
    (4) 传递一个对象,函数中的this指向这个对象

    二、apply()

    语法:apply([thisObj[,argArray]])

    定义:应用某一对象的一个方法,用另一个对象替换当前对象。

    说明:
    如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
    如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

    call 和 apply的区别
    对于 apply、call 二者而言,作用完全一样,只是接受参数的方式不太一样。

    三、bind
    bind是在EcmaScript5中扩展的方法(IE6,7,8不支持)
    bind() 方法与 apply 和 call 很相似,也是可以改变函数体内 this 的指向。

      MDN的解释是:bind()方法会创建一个新函数,称为绑定函数,当调用这个绑定函数时,绑定函数会以创建它时传入 bind()方法的第一个参数作为 this,传入 bind() 方法的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数。

    总结

    • apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;
    • apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;
    • apply 、 call 、bind 三者都可以利用后续参数传参;
    • bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。
  • 相关阅读:
    图解SQL的Join(转)
    MySQ数据表设计
    关于数据库DML、DDL、DCL区别
    SQL多表连接查询
    Xcode报错Expected selector for Objective-C and Expected method body
    Mac上安装使用MYSQL以及Navicat数据库管理和PHP服务器配置
    更换app开发者账号
    Mac 下的 C++ 开发环境
    spring-retry 重试机制
    Ribbon的主要组件与工作流程
  • 原文地址:https://www.cnblogs.com/1032473245jing/p/9939681.html
Copyright © 2011-2022 走看看