博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
call、apply、bind用法
阅读量:5245 次
发布时间:2019-06-14

本文共 1158 字,大约阅读时间需要 3 分钟。

1.call

// 作家
var Writer = {
income:0, // 收入 record:[], // 收录/明细 compute(){
var arg = arguments; for(var i = 0; i < arg.length; i++){
var item = arg[i]; for (const key in item) {
if (item.hasOwnProperty(key)) {
this.income += item[key]; } } this.record.push(item); //添加每一笔收入的明细 } } }
Writer.compute({'盗墓笔记':100},{'从你的全世界路过':200},{'那些年追过的女孩':300});
// 画家 var Painter = {
income:0, record:[], // 收录/明细 }
Writer.compute.call(Painter,{'大自然写生':300},{'海':20},{'树':77}) 2.apply
// 题目 var testArr = []; for(var i = 0; i < 5; i++){
testArr.push(i); }
var a = [3333];
a.push(...testArr); a.push.apply(a,testArr)

3.bind和call的区别

bind:1.改变函数作用域  2.返回一个新函数

eg:

var obj = {name:'obj'} var bindHandle = handle.bind(obj) function handle(){
console.log(arguments.callee) console.log(this.name); document.body.removeEventListener('click',arguments.callee); } document.body.addEventListener('click',handle.bind(obj))

call:执行函数

handle.bind(obj);
 

转载于:https://www.cnblogs.com/miaSlady/p/9304440.html

你可能感兴趣的文章
03 线程池
查看>>
手机验证码执行流程
查看>>
设计模式课程 设计模式精讲 2-2 UML类图讲解
查看>>
Silverlight 的菜单控件。(不是 Toolkit的)
查看>>
jquery的contains方法
查看>>
linux后台运行和关闭SSH运行,查看后台任务
查看>>
桥接模式-Bridge(Java实现)
查看>>
303. Range Sum Query - Immutable
查看>>
【★】浅谈计算机与随机数
查看>>
Leetcode 226: Invert Binary Tree
查看>>
C# Dynamic通用反序列化Json类型并遍历属性比较
查看>>
前台freemark获取后台的值
查看>>
Leetcode: Unique Binary Search Trees II
查看>>
C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
查看>>
Spring-hibernate整合
查看>>
c++ map
查看>>
exit和return的区别
查看>>
Django 相关
查看>>
git init
查看>>
训练记录
查看>>