apply,call,bind,symbol的用法

一、apply

  在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。

  this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。

  接收两个参数,一个是函数运行的作用域(this),另一个是参数数组。

  用法举例

  Math.max.apply(null, array)

  Math.max(...array)

二、call

  在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。

  this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。

  第一个参数和apply()方法的一样,但是传递给函数的参数必须列举出来。

  用法举例

三、bind

  返回一个函数

  用法举例

四、symbol

  Symbol 值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。

  用法举例

原文地址:https://www.cnblogs.com/it-cuiyi/p/10955754.html

时间: 2024-10-26 00:56:56

apply,call,bind,symbol的用法的相关文章

数组去重,call、apply、bind之间的区别,this用法总结

一.数组去重,直接写到Array原型链上. 1 //该方法只能去除相同的数字 不会去判断24和'24'是不同的 所有数字和字符串数字是相同是重复的 2 Array.prototype.redup=function(){ 3 var obj={}; 4 for(var i=0;i<this.length;i++){ 5 var val=this[i]; 6 if(obj[val]==this[i]){ //如果发现重复的 7 this[i]=this[this.length-1]; //那就把最后

js中call、apply、bind的用法

今天看博客时,看到了这样的一段js代码: var bind = Function.prototype.call.bind(Function.prototype.bind); 我想突然看到这样的一段代码,即使js能力再强的人,可能也需要花点时间去理解.像我这样的菜鸟就更不用说了.其实,原文已经对这端代码做出了解释,但我还是想用我的想法去解释这段代码. 上面那段代码涉及到了call.bind,所以我想先区别一下call.apply.bind的用法.这三个方法的用法非常相似,将函数绑定到上下文中,即用

apply、call、bind区别、用法

apply和call都是为了改变某个函数运行时的上下文而存在的(就是为了改变函数内部this的指向): 如果使用apply或call方法,那么this指向他们的第一个参数,apply的第二个参数是一个参数数组,call的第二个及其以后的参数都是数组里面的元素,就是说要全部列举出来: 他们的常用用法: 1.数组之间的追加: 2.获取数组中的最大值和最小值,利用他们扩充作用域拥有Math的min和max方法: 由于没有什么对象调用这个方法,所以第一个参数可以写作null或者本身: var  numb

call,apply,bind的用法以及区别

1.call.apply.bind的作用是改变函数运行时this的指向 方法调用模式: 当一个函数被保存为对象的一个方法时,如果调用表达式包含一个提取属性的动作,那么它就是被当做一个方法来调用,此时的this被绑定到这个对象. var a = 1 var obj1 = { a:2, fn:function(){ console.log(this.a) } } obj1.fn()//2 此时的this是指obj1这个对象,obj1.fn()实际上是obj1.fn.call(obj1),事实上谁调用

javascript中call()、apply()、bind()的用法终于理解

其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例1 obj.objAge;  //17 obj.myFun()  //小张年龄undefined 例2 shows()  //盲僧 比较一下这两者this 的差别,第一个this 指向obj,第二个全局声明的shows()函数   this 是window : 1,call().apply().bind() 都是用来重定义 this 这个对象的! 如: obj.myFun.call(db): //德玛年龄99  

(转)javascript中call()、apply()、bind()的用法

其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例1 obj.objAge;  //17 obj.myFun()  //小张年龄undefined 例2 shows()  //盲僧 比较一下这两者this 的差别,第一个this 指向obj,第二个全局声明的shows()函数   this 是window : 1,call().apply().bind() 都是用来重定义 this 这个对象的! 如: obj.myFun.call(db): //德玛年龄99  

call,apply,bind的用法与区别

1.call/apply/bind方法的来源 首先,在使用call,apply,bind方法时,我们有必要知道这三个方法究竟是来自哪里?为什么可以使用的到这三个方法? call,apply,bind这三个方法其实都是继承自Function.prototype中的,属于实例方法. 1 console.log(Function.prototype.hasOwnProperty('call')) //true 2 console.log(Function.prototype.hasOwnPropert

JS中的call、apply、bind方法

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

理解JS中的call、apply、bind方法

理解JS中的call.apply.bind方法(*****************************************************************) 在JavaScript中,call.apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向. call.apply.bind方法的共同点和区别:apply . call .bind 三者都是用来改变函数的this对象的指向的:apply . call .bind 三者

重写apply, call, bind方法

重写apply, call, bind方法 //原生JavaScript封装apply方法,第四版 Function.prototype.applyFour = function(context) { var context = context || window var args = arguments[1] //获取传入的数组参数 var fn = Symbol() context[fn] = this //假想context对象预先不存在名为fn的属性 if (args == void 0