javascript 中的call 和apply的区别

一直对call 和apply很模糊,今天终于搞懂了,分享出来给大家。

apply call bind方法

var ZS = {

  name:"张三",

  sex : "男",

  age : "25岁",

  say :function(){

  console.log(this.name+","+this.sex+",今年"+this.age)

  }

}

var LS = {

  name:"李四",

  sex : "女",

  age : "28岁"

}

ZS.say();  // 张三,男,今年25岁

张三有个say 方法,可以console我的个人信息 。

如何用张三的say方法显示李四的个人信息呢?

ZS.say.apply(LS);  // 李四,女,今年28岁

ZS.say.call(LS);  // 李四,女,今年28岁

ZS.say.bind(LS)();  // 李四,女,今年28岁

!注意 张三并没有把say给李四,李四根本没有say方法。

如果直接写xw.say.bind(xh)是不会有任何结果的,看到区别了吗?

call和apply都是对函数的直接调用,而bind方法返回的仍然是一个函数,因此后面还需要()来进行调用才可以。

call 和apply的区别

var WW = {

  name:"王五",

  sex : "男",

  age : "30岁",

  say :function(company,position){

  console.log(this.name+","+this.sex+",今年"+this.age+",目前就职于"+company+",职位是:"+position);

  }

}

var ZL = {

  name:"赵六",

  sex : "女",

  age : "33岁"

}

WW.say("阿里","web前端工程师");  //王五,男,今年30岁,目前就职于阿里, 职位是:web前端工程师

通过call和apply让赵六也可以用这个say方法

WW.say.call(ZL,"百度","canvas工程师");  // 赵六,女,今年33岁,目前就职于百度,职位是:canvas工程师(call后面的参数与say方法中是一一对应的);

WW.say.call(ZL,"百度",["百度","canvas工程师"]);  // 赵六,女,今年33岁,目前就职于百度,职位是:canvas工程师(apply的第二个参数是一个数组,数组中的元素是和say方法中一一对应的)

时间: 2024-11-29 11:52:40

javascript 中的call 和apply的区别的相关文章

Javascript中call方法和apply方法用法和区别

第一次在博客园上面写博客,知识因为看书的时候发现了一些有意思的知识,顺便查了一下资料,就发到博客上来了,希望对大家有点帮助. 连续几天阅读<javascript高级程序设计>这本书了,逐渐发现了以前很多自己完全没有用过甚至见过的神奇知识点.今天在阅读到有关函数的属性和方法的时候,略感高级,于是乎,查阅了不少他人的博客,在此总结一下这两个方法的以下几个方面: 1.call()和apply()的作用和用法 2.什么时候用apply(),什么时候用call() 书上提到,每个函数都包含两个非继承而来

浅谈javascript中的call、apply、bind

apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向. JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念. 先来一个栗子: function fruits() {} fruits.prototype = { color: "red", say: function() { console

javascript中的call()和apply()方法的使用

1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj. apply方法: 语法:apply([thisObj[,argArray]])

JavaScript中的property和attribute的区别

时间: 2013-09-06 | 10:24 作者: 玉面小飞鱼 分类: DOM, js相关, 前端技术 2,222 次浏览 1. 定义 Property:属性,所有的HTML元素都由HTMLElement类型表示,HTMLElement类型直接继承自Element并添加了一些属性,添加的这些属性分别对应于每个HTML元素都有下面的这5个标准特性: id,title,lang,dir,className.DOM节点是一个对象,因此,他可以和其他的JavaScript对象一样添加自定义的属性以及方

JavaScript中object和Object有什么区别

JavaScript中object和Object有什么区别,为什么用typeof检测对象,返回object,而用instanceof 必须要接Object呢 -------------------------------------------------------------------- 这个问题和我之前遇到的问题非常相似,我认为这里有两个问题需要解决,一个是运算符new的作用机制,一个是function关键字和Funtion内置对象之间的区别.看了一些前辈的博客和标准,这里帮提问者总结一

移花接木—— 再谈javascript中的 call 与 apply

在JavaScript中,call 和 apply 是Function对象自带的两个方法,这两个方法的主要作用是改变函数中的this指向,从而可以达到`接花移木`的效果.本文将对这两个方法进行详细的讲解,并列出几个关于call和apply的经典应用场景. call(thisArgs [,args...]) 该方法可以传递一个thisArgs参数和一个参数列表,thisArgs指定了函数在运行期的调用者,也就是函数中的this对象,而参数列表会被传入调用函数中.thisArgs的取值有以下4种情况

Javascript中call函数和apply函数的使用

Javascript 中call函数和apply的使用: Javascript中的call函数和apply函数是对执行上下文进行切换,是将一个函数从当前执行的上下文切换到另一个对象中执行,例如: sourceObj.method.call(destObj,params1,params2) 是将sourceObj中的method函数放在destObj中执行 call函数还有另外一种重要的作用,在Javascript面向对象编程中实现多继承的作用,例如: function parentClass()

JavaScript中的call、apply

JavaScript中的call.apply call JavaScript中的call是调用一个函数,在调用函数时,将this的值绑定为call参数中的第一个参数. var bye = function(param, param2){ console.log(this); console.log(param); console.log(param2); console.log("bye"); console.log(this.x) } t = {'x': 1}; bye.call(t

Javascript中的toString和valueOf的区别

语法:objectname.toString([radix])objectname要为其搜索字符串表示形式的对象.radix可选,为将数字值转换为字符串指定一个基数. 此值仅用于数字.toString 方法是一个所有内置的 JavaScript 对象的成员.它的行为取决于对象的类型: valueOf:返回指定对象的基元值. 语法:object.valueOf( )object 引用是任何内部 JavaScript 对象,将通过不同的方式为每个内部 JavaScript 对象定义 valueOf