首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

JS 手写: call、apply、bind

,因为 join 是 es6 语法,call 是 es3 语法 for (var i = 1, len = arguments.length; i < len; i++) { args.push...# 示例 # 用 apply 将数组各项添加到另一个数组 // concat 符合需求,但它并不是将元素添加到现有数组,而是创建并返回一个新数组 // 由于 push 接受可变数量的参数,所以也可以一次追加多个元素...// 如果 push 的参数是数组,它会将该数组作为单个元素添加,而不是将这个数组内的每个元素添加进去 var array = ['a', 'b']; var elements = [0, 1, 2]...; array.push.apply(array, elements); console.log(array); // ['a', 'b', 0, 1, 2] # 使用 apply 和内置函数 对于一些需要写循环以遍历数组各项的需求...else { var args_arr = []; for (var i = 0, len = args.length; i < len; i++) { args_arr.push

1.5K30

Js apply() call()使用详解

Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记...主要我是要解决一下几个问题: apply和call的区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于apply...(null,array); c)Array.prototype.push 可以实现两个数组合并 同样push方法没有提供push一个数组,但是它提供了push(param1,param,…paramN...Array.prototype.push.apply(arr1, arr2); 也可以这样理解,arr1调用了push方法,参数是通过apply将数组装换为参数列表的集合....apply的方式巧妙地解决这个问题!

1.4K60

js中的call和apply

一、call和apply简介 call() 和 apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。 两个方法都使用了对象本身作为第一个参数。...两者的区别在于第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。...二、call和apply的相同点和不同点 1. 区别 call传递的参数是序列1,2,3,4 apply传递的参数是集合型[1,2,3,4] 2....相同点 call和apply是替换前面函数内部的this指针以及传递参数。 功能:可以自动执行前面的函数 都有两个参数:a. 替换的对象 b....function method(a,b,c){ console.log(this,a,b,c);//{name: "张三", age: 20} 1 2 3 } method.apply

1.5K30

划重点:js中的this、call、apply

js中this有4种指向,分别为: 作为对象的方法调用 作为普通函数调用 构造器调用 Function.prototype.call或Function.prototype.apply调用 1、当作为对象的方法调用时...方法赋值给新的变量func2时,func2就是一个全局作用域中的普通函数,而非obj对象中的方法,已经与getName方法是两个完全独立的方法,拥有完全不同的作用域上下文*/ 3、在构造器中调用this 先要理解js...apply接收两个参数,第一个参数指定了调用apply的函数体内this对象的指向,第二个参数是一个带下标的集合,该集合可以是数组,也可以是类数组,apply方法把这个集合中的所有元素作为参数依次传递给调用...关于apply或call,两者的作用完全一致,都是更改调用apply或call的函数体内的this对象指向。...延伸应用: 理解了this、call、apply后,在实际js开发中,可以很方便的实现对象的继承 继承demo1: 1var Parent = function(){ 2 this.name

95020

js中call、apply、bind那些事

前言 回想起之前的一些面试,几乎每次都会问到一个js中关于call、apply、bind的问题,比如… 怎么利用call、apply来求一个数组中最大或者最小值 如何利用call、apply来做继承 apply...,-8,687); 将伪数组转化为数组 js中的伪数组(例如通过document.getElementsByTagName获取的元素)具有length属性,并且可以通过0、1、2…下标来访问其中的元素...,但是没有Array中的push、pop等方法。...Array.prototype.slice.call(arrayLike); 上面arr便是一个包含arrayLike元素的真正的数组啦( 注意数据结构必须是以数字为下标而且一定要有length属性 ) 数组追加 在js...中要往数组中添加元素,可以直接用push方法, 1234567 var arr1 = [1,2,3];var arr2 = [4,5,6];[].push.apply(arr1, arr2);// arr1

1.7K50

JS中的call()和apply()方法

JS中的call()和apply()方法 1、方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,...apply方法: 语法:apply([thisObj[,argArray]]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。...add.call(sub,3,1); 这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js...18 { 19 Class10.call(this); 20 Class11.call(this); 21 } 很简单,使用两个 call 就实现多重继承了 当然,js...说了call ,当然还有 apply,这两个方法基本上是一个意思,区别在于 call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组,也可以是arguments 还有 callee,caller

2.1K30

js中call、apply、bind那些事

前言 回想起之前的一些面试,几乎每次都会问到一个js中关于call、apply、bind的问题,比如… 怎么利用call、apply来求一个数组中最大或者最小值 如何利用call、apply来做继承 apply...,-67,5,7,6,-8,687); 将伪数组转化为数组 js中的伪数组(例如通过document.getElementsByTagName获取的元素)具有length属性,并且可以通过0、1、2…下标来访问其中的元素...,但是没有Array中的push、pop等方法。...Array.prototype.slice.call(arrayLike); 上面arr便是一个包含arrayLike元素的真正的数组啦( 注意数据结构必须是以数字为下标而且一定要有length属性 ) 数组追加 在js...中要往数组中添加元素,可以直接用push方法, var arr1 = [1,2,3]; var arr2 = [4,5,6]; [].push.apply(arr1, arr2);

1.6K60
领券