call,apply,bind用法


title: call,apply,bind用法
date: 2018-05-28 23:00:00
tags: call apply bind
categories: 前端


call

var obj = {
   name: 'hht',
   age : 1
}

function f(name,age){
  this.name = name;
  this.age = age;
  console.log(this.name);
  console.log(this.age);
}

f.call(obj,'mmd',18);
image
  • call()方法调用一个函数, 其具有一个指定的this值和分别地提供的参数(参数的列表).
  • call 的第一个参数是指定调用的这个函数的this ,非严格模式下this的值如果是null或者undefine ,那么这个this指向window
  • call 第二个以及之后的参数就是我们的arguments的值

apply

var obj = {
   name: 'hht',
   age : 1
}

function f(name,age){
  this.name = name;
  this.age = age;
  console.log(this.name);
  console.log(this.age);
}

f.apply(obj,['mmd',18]);
f.apply(obj,{0: 'mmd', 1: 18, length: 2});
image
  • call()方法的作用和 apply() 方法类似,只有一个区别,就是 call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组, 或伪数组。

bind

var obj = {
   name: 'hht',
   age : 1
}

function f(){
  for(let i = 0; i < 4; i++)
  {
    console.log(arguments[i]);
  }
  console.log(this);
}

var f1Bind = f.bind(obj,'hht',18);
f1Bind();
f1Bind(1,2);
image
  • bind 绑定时接受的参数跟 call 一致.
  • bind 不会立即调用,它会生成一个新的函数,你想什么时候调就什么时候调。
  • bind 绑定好的this不会改变
  • bind 绑定时的给的参数会成为这个绑定函数的固定参数,调用这个函数时这几个参数一定会在
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • call apply 用法 两者作用一致,都是把obj(即this)绑定到thisObj,这时候thisObj具备...
    HelloAndyZhang阅读 137评论 0 0
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,665评论 0 5
  • apply、call、bind apply call借用他人的函数方法 网上文章虽多,大多复制粘贴,且晦涩难懂,我...
    sponing阅读 2,055评论 2 32
  • 八天长假过去了,第一天的课堂上随意问了孩子们一个问题:在假期有没有想老师和同学啊?孩子们齐喳喳地说:“老师,我想你...
    梧桐潇雨xt阅读 559评论 0 0