zoukankan      html  css  js  c++  java
  • 关于call和apply的使用和区别

    JavaScrtipt在动态变换运行时会出现上下文特性, 在运行中,代码总是有一个上下文对象,代码处理在该对象之内. 上下文对象是通过this变量来体现的, 这个this变量永远指向当前代码所处的对象中.而动态改变方法所在的上下文this则需要使用apply和call方法。

    首先,这两个方法的作用是一样的,不同的只是表现方式,即传入参数的形式不同。

    语法如下:

    语法:

    foo.call([thisobj,arg1, arg2, arg2),接受多个参数,第一个为执行上下文相关实例化对象(thisobj),第二个参数到最后一个参数作为实际参数一个个传给foo对象,

    foo.apply(thisobj,[arg1,arg2,arg3]),apply最多接受两个参数,第一个为执行上下文相关实例化对象(thisobj),第二个为参数数组,传递给foo对象。

    实际作用:这两个方法可以用来代替另一个对象foo调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文(foo)改变为由 thisObj 指定的新对象。所以,整个过程中,foo只为提供一个方法,这个方法通过call和apply被thisobj调用了。

    如果没有提供 thisObj 参数,那么 Global 对象被用作thisObj。说明白一点其实就是更改对象的内部指针,即改变对象的this指向的内容。 

    【补充:javascript里的this指针逻辑上的概念也是实例化对象,而javascript里call和apply操作符可以随意改变this指向

  • 相关阅读:
    复制
    rpm 软件包管理
    xfsdump 备份文件系统
    dhcp服务器(一)
    【转】kafka集群搭建
    postgresql主从配置
    centos7 安装配置postgresql
    centos7 安装配置zookeeper
    zookeeper
    piplinedb 安装配置
  • 原文地址:https://www.cnblogs.com/pm-dongjian/p/5551360.html
Copyright © 2011-2022 走看看