js中call与apply的应用

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

================================

apply方法的官方解释为:应用某一对象的一个方法,用另一个对象替换当前对象。apply([thisObj[,argArray]])参数thisObj可选项。将被用作当前对象的对象。argArray可选项。将被传递给该函数的参数数组。说明如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。从上面官方的介绍可以看出,两者实现的功能是完全一样的,只是参数传递方式不一样,call是将各个参数以“,”隔开,而apply是将所有参数组成一个数组进行传递。===========================================

举例来说明两个方法的用法:function funa() {   this.o = "I'm string o";   this.i = "I'm string i";   //未定义this.u,但调用的是funb里面的,所以定不定义都无所谓;   this.fun = function(t,z) {       var s = "this.o: " + this.o + "/nthis.i: " + this.i + "/nthis.u: " + this.u + "/nt: " + t + "/nz: " + z;       alert(s);   }}function funb() {   this.o = "I'm other string o";   //未定义this.i,所以返回undefined   this.u = "I'm string u";}var a = new funa();var b = new funb();/*运行a对象的fun方法时,将a的this转为b对象的this因此funa里面的this.o实际是funb里面的this.o*/a.fun.call(b,"1st arg","2nd arg");从上面的例子可看出:obj1.method1.call(obj2,argument1,argument2)

简单的说就是把obj1的方法放到obj2上使用,后面的argument1..这些做为参数传入

===================================================

function Car(make, model, year) {  this.make = make;  this.model = model;  this.year = year;}  function RentalCar(carNo, make, model, year) {  this.carNo = carNo;   Car.apply(this, new Array(make, model, year))  //Car.call(this, make, model, year)}  myCar = new RentalCar(2134,"Ford","Mustang",1998)

document.write("Your car is a " + myCar.year + " " +  myCar.make + " " + myCar.model + ".");alert(myCar.carNo)alert(myCar.make)

=========================================在js继承中有作用,

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值