会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 JavaScript中call()、apply()、bind()方法特点讲解!

JavaScript中call()、apply()、bind()方法特点讲解

时间:2025-11-05 04:33:37 来源:益强数据堂 作者:域名 阅读:812次

在javascript中,特点每个对象中都会有一个apply()方法和一个call()方法

两者的讲解相同之处:

两者作用是都可以替代另一个对象调用一个方法,将一个函数的特点上下文改变成由thisObj指向的新对象

当我们通过call和apply来this的指向时,不传任何参数,讲解则默认为将this指向修改为windows,特点有参数时会指向第一个参数

两者不同之处:

apply最多只能有两个参数——新this对象和一个数组argArray。讲解如果给该方法传递多个参数,特点则把参数都写进这个数组里面,讲解当然,特点即使只有一个参数,讲解也要写进数组里。WordPress模板特点如果argArray不是讲解一个有效的数组或arguments对象,那么将导致一个TypeError。特点如果没有提供argArray和thisObj任何一个参数,讲解那么Global对象将被用作thisObj,特点并且无法被传递任何参数。

call它可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。这个方法主要用在js对象各方法相互调用的时候,使当前this实例指针保持一致,或者在特殊情况下需要改变this指针。源码库如果没有提供thisObj参数,那么 Global 对象被用作thisObj。

案例:

// apply()方法 obj.apply(thisObj,[arg1, arg2]) // call()方法 obj.call(thisObj,arg1,arg2,arg3) 

 以上thisObj继承了obj的属性和方法

// 例1: function add(j, k){   return j+k; } function sub(j, k){   return j-k; } // sub继承了add方法 console.log(add(5,3)); //8 console.log(add.call(sub, 5, 3)); //8 console.log(add.apply(sub, [5, 3])); //8 // add继承了sub方法 console.log(sub(5, 3)); //2 console.log(sub.call(add, 5, 3)); //2 console.log(sub.apply(add, [5, 3])); //2 // 例2: var person = function(){   this.name = "Tom";   this.age = 22; } var other = {}; console.log(other); // {} // other继承了person的属性 person.call(other); console.log(other); // {name: "Tom", age: 22} 

 bind绑定:

call()方法和apply()方法在绑定后会立即执行,而bind则不会立即执行

add.bind(sub, 5, 3); // 返回的是add方法函数本体 add.bind(sub, 5, 3)(); // 8 

 【编辑推荐】

这 7 个 Linux 命令,你是怎么来使用的? 或许这是目前为止比较好的 Git 教程了 微信小程序基础架构浅析 后悔药来了!iOS 15刷机降级iOS 14.6详细图文教程 基于WebAssembly的热门语言项目高防服务器

(责任编辑:人工智能)

推荐内容
  • 光驱安装XP系统教程(详细教你如何使用光驱安装XP系统)
  • 数据科学家和软件工程师都在用的Pandas函数有哪些?
  • 到底是谁杀死了互联网免费工具?
  • 免费开源!新加坡总理李显龙的儿子写了一本编程书籍
  • 台式电脑内置喇叭安装教程(一步步教你如何给台式电脑安装内置喇叭)
  • 2020年4月编程语言排行榜:C语言直逼Java,但Scratch才是本月最亮的星