javascript中bind,apply,call的相同和不同之处
javasctipt中bind,apply,call的相同点是:
1,都是用来改变this的指向;
2,都可以通过后续参数进行传参;
3,第一个参数都是指定this要指向的对象;
不同点:
1,调用方式不同,apply和call的调用方式一致,但是bind方式就不一样了;
var xz = {
name:'小张',
age:20,
show: function () {
console.log("name: %s; age: %d;",this.name,this.age);
}
} var xh = {
name:'小红',
age:22
}; xz.show();
xz.show.apply(xh);
xz.show.call(xh);
xz.show.bind(xh)(); //bind方法返回的任然是一个方法,所以还需要加()进行调用;
2,传参方式不同
var xz = {
name:'小张',
age:20,
show: function (school,grade) {
console.log("name: %s; age: %d; school:%s; grade:%s",this.name,this.age,school,grade);
}
} var xh = {
name:'小红',
age:22
}; xz.show('四川大学','12级4班');
xz.show.apply(xh,['电子科技大学','10级5班']);
xz.show.call(xh,"电子科技大学成都学院",'12级4班');
xz.show.bind(xh,"电子科技大学成都学院",'12级4班')();
xz.show.bind(xh)("电子科技大学成都学院",'12级4班');
apply的传参方式是数组形式;call和bind的传参方式相同,使用一一对应的方式传入,而bind还有另外一种传参方式就是在后面的回调里面穿入参数
javascript中bind,apply,call的相同和不同之处的更多相关文章
- 博文推荐】Javascript中bind、call、apply函数用法
[博文推荐]Javascript中bind.call.apply函数用法 2015-03-02 09:22 菜鸟浮出水 51CTO博客 字号:T | T 最近一直在用 js 写游戏服务器,我也接触 j ...
- javascript中call,apply,bind的用法对比分析
这篇文章主要给大家对比分析了javascript中call,apply,bind三个函数的用法,非常的详细,这里推荐给小伙伴们. 关于call,apply,bind这三个函数的用法,是学习java ...
- 面试官:能解释一下javascript中bind、apply和call这三个函数的用法吗
一.前言 不知道大家还记不记得前几篇的文章:<面试官:能解释一下javascript中的this吗> 那今天这篇文章虽然是介绍javascript中bind.apply和call函数 ...
- javascript中的apply,call,bind详解
apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向. Jav ...
- Javascript中的apply、call、bind
apply . call .bind 三者都是用来改变函数的this对象的指向的: apply . call .bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文: apply . ...
- javascript中bind函数的作用
javascript的bind的作用 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- JavaScript中的apply()和call()
可以将call()和apply()看做是某个对象的方法,通过调用方法的形式来间接调用函数. call()和apply()的第一个实参是要调用函数的母对象,它是调用上下文,在函数体内通过this来获得对 ...
- 关于JavaScript中bind、applay、call的区别
在JavaScript中this的指向一直是一个困扰我们的问题,在JavaScript中this的指向是不固定的,但是我们可以通过使用bind().call().apply()来改变this的指向,但 ...
- JavaScript中的apply和call函数详解(转)
每个JavaScript函数都会有很多附属的(attached)方法,包括toString().call()以及apply().听起来,你是否会感到奇怪,一个函数可能会有属于它自己的方法,但是记住,J ...
随机推荐
- yum和rpm命令详解
rpm,全称RPM Package Manager,是RedHat发布的,针对特定硬件,已经编译好的软件包.安装之后就可以使用,不需要自行编译,以及之前对软件和硬件的检测,目录的配置等动作. yum, ...
- Codeforces Round #230 (Div. 2) C Blocked Points
题目链接 题意 : 给你一个半径为n的圆,圆里边还有圆上都有很多整点,让你找出与圆外的任意一个整点距离等于1的点. 思路 :这个题可以用枚举,画个图就发现了,比如说先数第一象限的,往下往右找,还可以找 ...
- cocos2d-html5 Layer 和 Scene 创建模式
var myLayer = cc.Layer.extend({ init:function() {//2 界面 var bRet = false; if (this._super()) { bRet ...
- 运行edX Devstack
前一篇文章,我们安装完成了edX Devstack,本文将介绍edX Devstack的常用命令 6.1. 连接到 Devstack Virtual Machine 为了连接到Devstack vir ...
- asp.net上传图片(简单)
FileUpload: protected void UploadButton_Click(object sender, EventArgs e) { : Convert.ToInt64(Reques ...
- Spring事务管理--多个ORM框架在使用时的情况分析
公司的项目已经接近尾声了,总结一下项目中用到的技术,我发现项目中的有些东西还是挺模糊的,只是知道这么用就行了.并不清楚其中的原理.由于公司的项目比较老,是7年前的一个项目了,中间一直有人在维护,也是在 ...
- android 颜色收集及部分gridview样式设置
< ?xml version="1.0" encoding="utf-8" ?> < resources> < color nam ...
- 我的第一个Hibernate程序
1.建表建序列(所用数据库为Oracle,数据库名为XE,创建用户hibernate,密码为123456) conn system/manager; ; grant connect to hibern ...
- java中通过类名实例化类
String className ="test.Test1"; Class clazz; try { clazz = Class.forName(className); Test1 ...
- 期待已久的2012年度最佳jQuery插件揭晓
近日,国外著名博客WDL发布了2012年度最佳 jQuery 插件.jQuery 自2006年发布以来,经过6年的迅速发展,目前已是最流行和使用最广泛的 JavaScript 框架,这主要归功于众多围 ...