临时调用call()与apply()方法

当在某个局域范围内要调用构造函数中或者其他局域范围内的方法

此时可以用到临时调用方法call与apply

虽然这两个方法都是起临时调用的功能,但是用法不一样

call(obj,val)

obj:对象名,构造函数用指代this;  val:指代属性值

apply(obj,arr)

obj:对象名,构造函数用指代this;  arr:属性值的数组

实例一:

function SuperType(name){
  this.name = name;
}

function SubType(){
  // SuperType.call(this,"Lucy");    //临时调用构造函数SuperType里面的name属性
  SuperType.apply(this,["Lucy"]);  
  this.age = 19;
}

var instance = new SubType();
alert(instance.name);   //Lucy

//但是有些场合只能用特定的方法,不能互换

实例二:

取数组中最大值:

function isMax(arr){return Math.max.apply(null,arr)}

var nums = isMax([2,3,4,5,6]);

alert(nums);   //6

时间: 2024-08-04 13:40:08

临时调用call()与apply()方法的相关文章

angularJS之$apply()方法

这几天,根据buddy指定的任务,要分享一点angular JS的东西.对于一个在前端属于纯新手的我来说,Javascript都还是一知半解,要想直接上手angular JS,遇到的阻力还真是不少.不过我相信,只要下功夫,即使是反人类的设计也不是什么大的问题.     Okay,废话不多说.为了弄明白angular JS为何物,我先是从Scope开始.那么什么是Scope呢?借用官方文档的一段话: "scope is an object that refers to the applicatio

javascript中的call和apply方法介绍

/*构造函数模式*/function Person(name, age, job) {    this.name = name;    this.age = age;    this.job = job;    sayName = function() {        alert(this.name);    };}var personThis=new Person("thisLff", 24, "doctor");//①当构造函数来使用//构造函数对象都有一个c

call和apply方法

普通函数中是否也有this关键字,this指向谁呢? <script type="text/javascript"> function myfun(){ console.log(this); } myfun(); </script> 控制函数内部的this指向: 函数都可以打点调用call()和apply()方法,可以帮我们制定函数内部的this指向,在函数调用过程使用这两个方法. var oDiv = document.getElementsByTagName

数组原型方法调用及函数apply调用时 类数组参数在IE8下的问题

当函数以 apply 方式调用时, 传参方式是一个由各个参数组成的数组或类数组(一个有length属性的对象),传入参数个数取决于 length 的值,例如,某个对象 args.length=3; apply 会将 args[0],args[1],args[2] 三个参数传入,如果对应的值不存在则传入了undefined. 例如: function f(a,b,c){ console.log(a,b,c);} f.apply(null,{0:123,1:456,2:789,length:2});

S1:动态方法调用:call &amp; apply

js中函数执行的两种方式:一是通过调用运算符’()’,二是通过调用call或apply来动态执行. 一.动态方法调用中指定this对象 开发中我们往往需要在对象B中调用对象A的方法,这个时候就用到了apply()和call(),它们的第一个参数就是用于指定this对象,如果为null,则表明传入默认的宿主对象. function foo(){ alert(this.name); } function MyObject(){ this.name = 'MyObject'; } MyObject.p

Effective JavaScript Item 21 使用apply方法调用函数以传入可变参数列表

本系列作为Effective JavaScript的读书笔记. 下面是一个拥有可变参数列表的方法的典型例子: average(1, 2, 3); // 2 average(1); // 1 average(3, 1, 4, 1, 5, 9, 2, 6, 5); // 4 average(2, 7, 1, 8, 2, 8, 1, 8); // 4.625 而以下则是一个只接受一个数组作为参数的例子: averageOfArray([1, 2, 3]); // 2 averageOfArray([1

javascript中call和apply方法

转:http://www.cnblogs.com/ArthurPatten/p/3335912.html 我们可以将call和apply看做是某个对象的方法,通过调用方法的形式来间接调用函数.call和apply的第一个实参是要调用函数的母对象,它是调用上下文,在函数体内通过this来获得对它的引用. 例如,如果要想以对象o的方法来调用函数f,可以按如下的方式使用call和apply方法: f.call(o); f.apply(o); 可以按如下的代码来理解: o.m = f; //将f存储为o

Scala 中apply方法的用法

Scala 是构建在 JVM 上的静态类型的脚本语言,而脚本语言总是会有些约定来增强灵活性.关于协议在Python中是挺多的,看看Python的对象协议,有很多很多,如果对Python的对象协议了解(不了解的可以点击此处)的比较深刻的话,其实scala的apply方法也是很好理解的,比如说 Scala 为配合 DSL 在方法调用时有这么一条约定: 在明确了方法调用的接收者的情况下,若方法只有一个参数时,调用的时候就可以省略点及括号.如 "0 to 2",实际完整调用是 "0.

call 方法和 apply方法

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