apply()和call()这两个方法的作用是一样的,都是在特定作用域中调用函数,等于设置函数体内this对象的只,以扩充函数赖以运行的作用域

apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性

Function.apply(obj,arguments)方法能接收两个参数

boj:这个对象将代替function累里this对象

argument:这个是数组,它将作为参数传给function

call和apply的意思一样,只是参数列表不一样

function.call(obj,[param1[,param2[,…[,paramN]]]])

obj:这个对象将代替function类里this对象

params:这是一个参数列表

1、apply示例

<script>
//定义一个人类
function Person(name,age){
this.name = name,
this.age = age
} //定义一个学生类
function Student(name,age,grade){
Person.apply(this,arguments);
this.grade = grade;
} var student = new Student("zhangsan",21,"一年级"); alert("name:"+student.name+"\n"+"age:"+student.age+"\n"+"grade:"+student.grade);
//输出结果:name:zhangsan age:21 grade:一年级
</script>

分析:Person.apply(this,arguments);

this:在创建对象在这个时候代表的是student

argument:是一个数组,也就是["zhangsan",21,"一年级"];

也就是通俗一点讲就是:用student去执行Person这个类里面的内容,在Person这个类里面存在this.name等之类的语句,这样就讲属性创建到了student对象里面

2、call示例

在Student申述里面可以将apply修改为:Person.call(this,name,age)

当参数是数组类型,并且在调用Person的时候参数的列表是对应一致的(Person和Student的参数列表前两位是一致的)使用apply

如果Person的参数列表是(age,name),而Student的参数列表是(name,age,grade)使用call

在Math.max()中求数组的最大值

Math.max([param1,param2,...])这样是不支持数组的,但是他支持Math.max(param1,param2,...),这时我们可以使用Math.max.apply(null,array)

js apply和call的更多相关文章

  1. 由js apply与call方法想到的js数据类型(原始类型和引用类型)

    原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b, ...

  2. [荐]Js apply()和call()方法详解 - http://www.w3cfuns.com/article-5596443-1-1.html

    本帖最后由 默默DE人生 于 2013-3-19 13:22 编辑 Js apply方法详解我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文 ...

  3. Js apply 方法 详解

    Js apply方法详解 我在一开始看到JavaScript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...

  4. Js apply() call()使用详解

    Js apply方法详解我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里 ...

  5. Js apply 方法 具体解释

    Js apply方法具体解释 我在一開始看到javascript的函数apply和call时,很的模糊,看也看不懂,近期在网上看到一些文章对apply方法和call的一些演示样例,总算是看的有点眉目了 ...

  6. Js apply call方法详解

    Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...

  7. Js apply()使用详解

    Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...

  8. Js apply方法详解,及其apply()方法的妙用

    Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...

  9. Js apply方法与call方法详解 附ES6新写法

    我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家 ...

  10. js apply/call/caller/callee/bind使用方法与区别分析

    一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). Js代码 call([thisObj[,arg1[, arg2[, ...

随机推荐

  1. IDEA01 创建java项目、创建web项目

    注意:本教程使用的开发环境是:(专业版) 1 创建javaSE项目 1.1 file -> new -> project 注意:如果是第一次使用,就需要配置 project SDK  , ...

  2. 关于Java中hashCode方法的实现源码

    首先来看一下String中hashCode方法的实现源码. public int hashCode() { int h = hash; if (h == 0 && value.leng ...

  3. 数据结构与算法(Java版)_堆

    完全二叉树叫做堆. 完全二叉树就是最后一个节点之前不允许有不满的节点,就是不允许有空洞. 可以使用数组来做完全二叉树(堆). 堆分为大顶堆和小顶堆.大顶堆就是根节点上的数字是最大的,小顶堆就是根节点上 ...

  4. netty中的PoolChunk

    数据结构学的烂,看这个类比较的吃力 PoolChunk主要使用long allocate(int normCapacity) 在buffer pool中分配buffer.这个类有几个重要的概念:pag ...

  5. Java分层概念(转)

    Java分层概念(转) 对于分层的概念,似乎之间简单的三层,多了,就有点难以区分了,所以收藏了这个. ervice是业务层 action层即作为控制器 DAO (Data Access Object) ...

  6. java 删除文件夹中的所有文件及文件夹

    删除文件夹(前提:文件夹为空以及InputStream和OutputStream等一些数据文件流关掉[close()],否则文件无法删除) //删除文件夹 public static void del ...

  7. sql去掉换行符

    select replace(replace(ServiceCall,CHAR(13),''),CHAR(10),'') from outbound_complaint  where  bz1='朱成 ...

  8. Appium的常用定位方法

    使用uiautomatorviewer.bat工具来找到属性定位元素,在SDK的tools目录下找到该工具,双击打开.左边框内展示app的界面元素,右上角框内展示元素的层级关系,右下角框内展示元素的属 ...

  9. ps 常用命令

    1.ps aux:显示所有进程信息 2.ps -u root:显示指定用户信息 3.ps -ef:显示所有进程信息,连同命令行 ps -ef|grep ssh 4.ps -axjf 显示程序树 5.p ...

  10. linux 定制

    转载至http://luyafei.blog.51cto.com/1092421/1131532 测试环境: VMware Workstation 8.0 CentOS 6.7 x86_64 1.安装 ...