ECMAScript——引用数据类型之function关于call和apply

call、apply:
作用:
1、改变函数中的this,把第一个形参的值作为当前函数的this
2、让当前的函数执行
例如:fn.call(obj) 让fn中的this变为obj,然后在让fn函数执行

区别:在给函数传递参数的时候,call是一个个传,apply是把需要传递的参数放到一个数组中,一起传进去
函数名.call([this],parameter1,parameter2...)
函数名.apply([this],[parameter1,parameter2...])

call/apply:第一个参数写谁,函数中的this就是谁,但是有特殊的情况:
在非严格模式下:
第一个参数不写,或者写null/undefined,this都是window
在严格模式下("use strict";):
第一个参数写谁就是谁,写null就是null,写undefined就是undefined,不写也是undefined

call、apply的应用:

获取数组中的最大值和最小值

var ary = [12, 25, 13, 26, 27, 59, 56];

借用数学函数中的max和min方法实现:利用了apply这个方法在执行的时候,需要把传递的参数当做数组传进去

var ary = [12, 25, 13, 26, 27, 59, 56];
var max = Math.max.apply(null, ary);
var min = Math.min.apply(null, ary);
console.log(min, max); //  12    59

  

时间: 2024-08-10 02:11:17

ECMAScript——引用数据类型之function关于call和apply的相关文章

ECMAScript——引用数据类型之操作语句

总结:if判断.三元运算符.switch case(=.==.===的区别) for(break continue).for in.while.do while循环

JavaScript中基本数据类型和引用数据类型的区别

1.基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型. 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值. 2.常见的基本数据类型: Number.String .Boolean.Null和Undefined.基本数据类型是按值访问的,因为可以直接操作保存在变量中的实际值.示例: var a = 10; var b = a; b = 20;

Js 基本数据类型、引用数据类型

数据类型 1.   ECMAScript变量包含两种不同类型的值:基本类型值.引用类型值: 2.   基本类型值:指的是保存在栈内存中的简单数据段: 3.   引用类型值:指的是那些保存在堆内存中的对象,意思是,变量中保存的实际上只是一个指针,这个指针指向内存堆中实际的值: 回到目录 两种访问方式 4.   基本类型值:按值访问,操作的是他们实际保存的值: 5.   引用类型值:按引用访问,当查询时,我们需要先从栈中读取内存地址,然后再顺藤摸瓜地找到保存在堆内存中的值: 回到目录 两种类型复制

js基础之引用数据类型

引用类型数据: 也就是对象类型Object type,比如:Object .Array .Function .Data等. javascript的引用数据类型是保存在堆内存中的对象. 与其他语言的不同是,你不可以直接访问堆内存空间中的位置和操作堆内存空间.只能操作对象在栈内存中的引用地址. 所以,引用类型数据在栈内存中保存的实际上是对象在堆内存中的引用地址.通过这个引用地址可以快速查找到保存中堆内存中的对象. var obj1 = new Object(); var obj2 = obj1; o

JavaScript引用数据类型

JavaScript引用数据类型 引用类型 在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起(它也常被称为类). Object类型 创建Object实例的方式有两种.第一种是使用new操作符后跟Object构造函数,例如; var person = new Object(); person.name = "Nicholas"; person.age = 29; 另一种方式是使用对象字面量表示法. 例如: var person = { name : "

js中基本数据类型和引用数据类型的区别

1.基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型. 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值. 2.常见的基本数据类型: Number.String .Boolean.Null和Undefined.基本数据类型是按值访问的,因为可以直接操作保存在变量中的实际值.示例: var a = 10; var b = a; b = 20;

javascript实现引用数据类型的深拷贝和浅拷贝详解

关于引用类型值的详解,请看另一篇随笔 https://www.cnblogs.com/jinbang/p/10346584.html 深拷贝和浅拷贝,也就是引用数据类型栈和堆的知识点.深浅拷贝的原型都是Object,深拷贝指向的栈内存不一样,浅拷贝指向的栈内存一样): 如何区分深拷贝与浅拷贝,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B没有发生变化,说明是深拷贝.如果B也跟着发生了变化,说明是浅拷贝. let obj = { name: "jin", arr: [&quo

Java基础之路(一)下--引用数据类型之数组

上次我们说了java的基础数据类型,今天我们就来说一下引用数据类型中的数组. 什么是数组 数组:存储在一个连续的内存块中的相同数据类型(引用数据类型)的元素集合. 数组中的每一个数据称之为数组元素,数组中的元素以索引来表示其存放的位置,索引(下标)从0开始. 数组的定义 第一种方式:类型[] 数组名; 如 int[] nums;  第二种方式:类型数组名[]; 如 int nums[]; 大多数Java程序员喜欢使用第一种风格,因为它把数据类型int[],和变量名num分开了. 数组的初始化 J

【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)

原文网址:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/20/2147086.html 基于 Android NDK 的学习之旅-----数据传输二(引用数据类型)(附源码) 基于 Android NDK 的学习之旅-----数据传输(引用数据类型) 接着上篇文章继续讲.主要关于引用类型的数据传输,本文将介绍字符串传输和自定义对象的传输. 1.主要流程 1.  String 字符串传输 a)         上层定义一个native的方法