关于 js 中的 call 和 apply使用理解
2014-10-10 15:16
579 查看
在学习新的东西时候,碰到以前看过而又不理解,或则记忆不深的地方不妨回头看看书里知识点,有助于加深理解。正所谓--温故而知新。
废话不多说,直接上代码:
第一节:一个简单的例子
总结:以上代码 定义两个方法,而最后一句话,不妨理解为 sub对象 调用了 add对象 的方法,并把参数也带入方法里。
第二节:深入理解 call 和 apply
call 和 apply的定义说明:call和apply 是函数的非继承方法,在某个特定作用范围内调用某个函数,设置函数体内this对象的值,
总结:比如说:k 对象没有 sayName 的函数,而 n 有这个函数,那 k 就通过call 来借 n的 sayName使用,当然也要把在 k 中的值带入到方法里。
第三节:call 和 apply 的 区别
说明:call 和 apply 的区别,在于两个传入的参数的方式不一样
总结:
以上的例子有两个要点:
1,是可以使用 call的方法来做 js 的继承处理;
2,call 和 apply 的区别主要是在于后面的传入参数方式不同,call传参数要把参数一一列出来,而apply则可以使用 arguments 这个属性直接带过去.
废话不多说,直接上代码:
第一节:一个简单的例子
function add(a,b){ console.log(a+b); } function sub(a,b){ console.log(a-b); } add.call(sub,3,2); //5
总结:以上代码 定义两个方法,而最后一句话,不妨理解为 sub对象 调用了 add对象 的方法,并把参数也带入方法里。
第二节:深入理解 call 和 apply
call 和 apply的定义说明:call和apply 是函数的非继承方法,在某个特定作用范围内调用某个函数,设置函数体内this对象的值,
function NJie(){ this.name = "Njie", this.sayName = function(){ console.log(this.name); } } function KK(){ this.name ="KK"; } var n = new NJie(); var k = new KK(); n.sayName(); //NJie n.sayName.call(k); //KK
总结:比如说:k 对象没有 sayName 的函数,而 n 有这个函数,那 k 就通过call 来借 n的 sayName使用,当然也要把在 k 中的值带入到方法里。
第三节:call 和 apply 的 区别
说明:call 和 apply 的区别,在于两个传入的参数的方式不一样
// 父类 function Person(name,age){ this.name = name; this.age = age; } //子类 学生 function Student(name,age,grade){ Person.apply(this,arguments); //子类继承了父类 // Person.call(this,name,age); //当然,也可以使用 call的方法 this.grade = grade; } //创建一个学生的实例 var s1 = new Student("倪杰","23","北京大学成人班,一年级"); console.log("您好,",s1.name,"您今年",s1.age,"岁,就读于",s1.grade,",实在太棒了");
总结:
以上的例子有两个要点:
1,是可以使用 call的方法来做 js 的继承处理;
2,call 和 apply 的区别主要是在于后面的传入参数方式不同,call传参数要把参数一一列出来,而apply则可以使用 arguments 这个属性直接带过去.
相关文章推荐
- 关于 js 中的 call 和 apply使用理解
- 关于 js 的 prototype , call,apply ,闭包,回调 个人浅显理解
- 关于JS中Apply和Call的一些理解
- 谈谈关于js中关于函数的apply和call方法的理解
- JS 中 call 和 apply 的理解和使用
- js apply/call/caller/callee/bind使用方法与区别分析
- js apply/call/caller/callee/bind使用方法与区别分析
- js中的call()方法理解和使用
- js apply/call/caller/callee/bind使用方法与区别分析
- 关于js的一些关键知识点(call,apply,callee, caller,clourse,prototypeChain)
- callee,caller,call()以及apply()的用法理解以及从中引申出的关于作用域跟this的理解
- js经验点滴js apply/call/caller/callee/bind使用方法与区别分析
- [转]js中call,apply,setCapture,releaseCapture的使用
- js中Call与Apply的简单理解
- 理解 backbone.js 中的 bind 和 bindAll 方法,关于如何在方法中指定其中的 this,包含apply方法的说明[转载]
- 关于js中单引号(')和双引号(")的使用以及转义的理解
- js apply/call/caller/callee/bind使用方法与区别分析
- js apply/call/caller/callee/bind使用方法与区别分析
- 关于js中单引号(')和双引号(")的使用以及转义的理解
- 关于JS的this和容易混淆的Call(), Apply(), Bind()