var a= {
name:"李四",
age: "五岁",
text: function() {
return this.name+ " " + this.age;
}
} let b= {
name: "张三",
age: "八岁",
};

console.log(a.text()); // 李四--五岁--undefined--undefined
console.log(a.text.call(b)); // 张三--八岁--undefined--undefined
console.log(a.text.call(b, '身高120', '胸围90')); // 张三--八岁--身高120--胸围90
console.log(a.text.call(b, ['身高120', '胸围90'])); // 张三--八岁--身高120,胸围90--undefined


// apply 的所有参数必须放在数组里传进去
console.log(a.text.apply(b));// 张三--八岁--undefined--undefined
console.log(a.text.apply(b, '身高130', '胸围95')); // CreateListFromArrayLike called on non-object
console.log(a.text.apply(b, ['身高130', '胸围95']));// 张三--八岁--身高130--胸围95


// bind 返回的是一个新的函数,你必须调用它才会被执行; bind 除了返回是函数以外,它 的参数和 call 一样
console.log(a.text.bind(b)()); // 张三--八岁--undefined--undefined
console.log(a.text.bind(b, '身高140', '胸围100')()); // 张三--八岁--身高140--胸围100
console.log(a.text.bind(b, ['身高140', '胸围100'])()); // 张三--八岁--身高140,胸围100--undefined

 

js中的call()、apply()、bind()方法的更多相关文章

  1. js中的call,apply,bind区别

    在JavaScript中,call.apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向. call.apply.bind方法的共同点和区别:app ...

  2. javascript中的call(),apply(),bind()方法的区别

    之前一直迷惑,记不住call(),apply(),bind()的区别.不知道如何使用,一直处于懵懂的状态.直到有一天面试被问到了这三个方法的区别,所以觉得很有必要总结一下. 如果有不全面的地方,后续再 ...

  3. js 中 new call apply bind JSON.stringify 的原理以及模拟实现

    1.new的原理和实现 它创建了一个全新的对象. 它会被执行 [[Prototype]](也就是 __proto__)链接. 它使 this指向新创建的对象. 通过 new创建的每个对象将最终被 [[ ...

  4. js中call,apply,bind方法的用法

    call .apply.和bind 以上这三个方法都是js function函数当中自带的方法,用来改变当前函数this的指向. call()方法 语法格式: fun.call(thisArg[,ar ...

  5. JS 的 call apply bind 方法

    js的call apply bind 方法都很常见,目的都是为了改变某个方法的执行环境(context) call call([thisObj[,arg1[, arg2[,   [,.argN]]]] ...

  6. JavaScript中call,apply,bind方法的区别

    call,apply,bind方法一般用来指定this的环境. var a = { user:"hahaha", fn:function(){ console.log(this.u ...

  7. JavaScript内置一些方法的实现原理--new关键字,call/apply/bind方法--前戏

    new关键字,call/apply/bind方法都和this的绑定有关,在学习之前,首先要理解this. 一起来学习一下this吧 首先.this是一个对象. 对象很好理解,引用类型值,可以实现如th ...

  8. 深入浅出:了解JavaScript中的call,apply,bind的差别

     在 javascript之 this 关键字详解文章中,谈及了如下内容,做一个简单的回顾:         1.this对象的涵义就是指向当前对象中的属性和方法.       2.this指向的可变 ...

  9. js中call和apply的实现原理

    js中call和apply的实现原理            实现call的思路: /* 还有就是call方法是放在Function().prototype上的也就是构造函数才有的call方法 (我门可 ...

  10. 判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解

    提醒大家,Object.prototype.toString().call(param)返回的[object class]中class首字母是大写,像JSON这种甚至都是大写,所以,大家判断的时候可以 ...

随机推荐

  1. Maven简答题

    1.什么是Maven? 自动化构建工具,专注服务于Java平台的项目构建和依赖管理 2.使用Maven的好处以及原因? (1)大量的jar包反复复制,造成冗余.使用Maven后每个jar包只在本地仓库 ...

  2. windows系统mysql8.0.20.0踩坑(-)

    首先, 下载mysql-installer-web-community-8.0.20.0.msi 一步一步安装下来,一切看起来如此美好 cmd运行mysqld --install 但发现net sta ...

  3. jenkins构建触发器定时任务Build periodically和Poll SCM 后续研究

    https://www.cnblogs.com/caoj/p/7815820.html

  4. dart+flutter中使用PaginatedDataTable分页时最后一页多出空白行问题

    使用PaginatedDataTable时解决最后一页不够当前行的话会有很空白行的问题 解决的场景: 比如下图,28行数据,每页5行最后一页会多出两行空白. 解决方法: 可以使用PaginatedDa ...

  5. RabbitMQ管理界面使用之手动送数据

    目录 1. 找到相应的队列, 点击进入详情 2. 找到Publish Message项,填写自定义数据 3. 发送数据 4. 发送成功 5. 接收 1. 找到相应的队列, 点击进入详情 2. 找到Pu ...

  6. Linux_CMD_FOR_FILE&FOLDER

    0,删除文件夹和子文件夹:rm -rf /xxx/xxx 0,拷贝整个文件夹:cp -r /xxx/xxx /ddd/ 0,改文件名:mv oldName newName 0,新建文件:touch f ...

  7. oracle中 null 和 '' 和' '的比对

    SELECT LENGTH(''),LENGTH(NULL),LENGTH(' '),LENGTH(TRIM(' ')) FROM dual; 返回结果为 null,null,1,null 也就是在o ...

  8. MinGW、Linux GNU、MSVC编译和链接动态库的分析

    这几天研究CMake跨平台项目嘛,用了以下几种编译器: VS2019(MSVC) Linux GNU MinGW 编译之后发现链接动态库发现以下问题: VS2019中如果直接链接CMakeLists. ...

  9. Django-django-celery的配置

    1.安装django-celery   pip install django-celery 2.添加配置 demos/demos/settings.py(我的项目名为demos,这里只是示范,切勿搞混 ...

  10. 什么是cache

    什么是cacheTo minimize the quantity of control information stored, the spatial locality property is use ...