结论:

相同点:

1、都是js原生方法,改变函数中的this指向

2、都可以传递参数,第一个参数为 把this指向到哪里去,即目标元素

不同点:

1、call和apply都是主动触发,绑定后自动执行,bind为手动绑定,不自动执行。

2、call和apply在传递参数的方式上有所不同,call为直接传参,apply的参数需要放在数组中

代码:

<script type="text/javascript">
var person = {name:'小明'}
person.say = function(){
console.log(this.name+'给范冰打了一晚上电话')
} person.say(); var person2 = {name:'阿华'}
person.say.call(person2) //把this指向改为person2,且主动执行了say方法,apply方法用法一样 </script>

传参时:

<script type="text/javascript">
var person = {name:'小明'}
person.say = function(tar,time){
console.log(this.name+'给'+tar+'打了'+time+'电话')
} person.say('特朗普','1小时'); var penson2 = {name:'阿华'}
person.say.call(penson2,'奥巴马','2小时') //call传递参数时,直接传参
//person.say.apply(penson2,['奥巴马','2小时']) //apply传递参数时,用数组传参 </script>

bind用法:

<script type="text/javascript">
var person = {name:'小明'}
person.say = function(tar,time){
setTimeout(function(){
console.log(this.name)
}.bind(person), 1000) //手动在函数后面绑定this指向,1秒后打印小明
}
person.say()
</script>

如此,打完收工!

原生js中call、apply、bind的区别和相同点的更多相关文章

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

    call.apply.bind方法的共同点与区别: apply.call.bind 三者都是用来改变函数的this对象的指向: apply.call.bind 三者都可以利用后续参数传参: bind ...

  2. JS中call,apply,bind的区别

    1.关于this对象的指向,请看如下代码 var name = 'jack'; var age = 18; var obj = { name:'mary', objAge:this.age, myFu ...

  3. 原生js中slice()方法和splice()区别

    slice()方法和splice()方法都是原生js中对数组操作的方法. slice(),返回一个新的数组,该方法可从已有的数组中返回选定的元素.例如:arrObject(start,end),sta ...

  4. 原生JS实现call,apply,bind函数

    1. 前言 使用原生JS实现call和apply函数,充分了解其内部原理.call和apply都是为了解决改变this的指向.作用都相同,只是传参的方式不同.除了第一个参数外,call可以接受一个参数 ...

  5. JS中call,apply,bind方法的总结

    why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之前,通常会有这些问题. var a = { user: "小马扎", fn: ...

  6. 原生JS中apply()方法的一个值得注意的用法

    今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...

  7. 深入理解js中的apply、call、bind

    概述 js中的apply,call都是为了改变某个函数运行时的上下文环境而存在的,即改变函数内部的this指向. apply() apply 方法传入两个参数:一个是作为函数上下文的对象,另外一个是作 ...

  8. JS 的 call apply bind 方法

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

  9. javascript中call,apply,bind的用法对比分析

    这篇文章主要给大家对比分析了javascript中call,apply,bind三个函数的用法,非常的详细,这里推荐给小伙伴们.   关于call,apply,bind这三个函数的用法,是学习java ...

  10. JS 中的require 和 import 区别整理

    ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用require引入模块,使 ...

随机推荐

  1. H3C CHAP验证配置示例二

  2. H3C HDLC配置

  3. nginx——前端服务环境

    背景:之前一直使用tomcat服务器来作为测试环境:(vue项目打包后想测试下生产环境下有没有问题!使用tomcat有各种问题,还怀疑是我们源码有问题?尴尬)今天公司同事才告诉我tomcat是专门为j ...

  4. 【9103】求n的累加和

    Time Limit: 10 second Memory Limit: 2 MB 问题描述 用高精度方法,求s=1+2+3+...+n的精确值(n以一般整数输入) Input 文件输入仅一行,输入n ...

  5. angular 全局常用指令

    1.全局支持 enter快捷键触发事件 // 全局指令 app.directive('ngEnter', ['$window',"$timeout", ($window,$time ...

  6. P1091 剧院广场

    题目描述 柏林首都的剧院广场呈长方形,面积为 \(n \times m\) 平方米.在这座城市的周年纪念日之际,人们决定用方形花岗岩石板铺设广场.每块石板的大小都是 \(a \times a\) . ...

  7. CSS选择器权重计算规则

    从CSS代码存放位置看权重优先级:内嵌样式 > 内部样式表 > 外联样式表.其实这个基本可以忽视之,大部分情况下CSS代码都是使用外联样式表. 从样式选择器看权重优先级:important ...

  8. H3C 使用tracert命令

  9. html 中文占位符

    => 普通的英文半角空格   =>   =>   => no-break space (普通的英文半角空格但不换行)   => 中文全角空格 (一个中文宽度)   =&g ...

  10. JQ表单选择器和CSS3表单选择器

    JQ表单选择器和CSS3表单选择器 JQ表单选择器 为了使用户能够更加灵活地操作表单,jQuery中加入了表单选择器,利用这个选择器能极其方便的获取到表单的某个或者某类型的元素.表单选择器的介绍如图: ...