`

9 通过call()和apply()重新定义执行环境

 
阅读更多

通过前面学习,已知道this对象的环境是如何随着函数被赋值给其它对象而相应改变的。

我们过可以使用Function对象的call()与apply()方法改变this指向(环境)
例如:
  对象.方法.call(环境对象)

  obj.say.call(window)
  或
  obj.say.apply(window)

 
  
call()与apply()的区别是在参数上,如果sya()方法有参数
  obj.say.call(window,args1,aegs2,...) say()方法的参数,每一个都要写在括号内
  obj.say.apply(window,arguments)  arguments是参数数组,是Function的属性,可直接使用.
  
写一个通用一点的方法,包括对不定数量的参数的处理

//
//把函数func,的上下文环境改为obj对象
//
function bindFunction(obj,func)
{
 return function(){
  func.apply(obj,arguments);
 };
}

 

分享到:
评论

相关推荐

    理解JavaScript的caller callee call apply

    ### 理解JavaScript中的`caller`...综上所述,理解`caller`、`callee`、`call`、`apply`以及`arguments`对象在JavaScript编程中至关重要,它们不仅增强了函数的灵活性和复用性,还提供了深入分析和调试代码的强大工具。

    apply和call方法定义及apply和call方法的区别

    在JavaScript中,`apply`和`call`方法都是Function对象的内置方法,它们的主要作用是改变函数调用时的上下文(即`this`值),并允许我们在不同对象上执行同一方法,从而实现方法的借用。这两者在功能上相似,但参数...

    浅谈javascript中的call、apply、bind_.docx

    bind 方法是 ES5 新增的一个方法,它的传参和 call 类似,但又和 call/apply 有着显著的不同,即调用 call 或 apply 都会自动执行对应的函数,而 bind 不会执行对应的函数,只是返回了对函数的引用。 粗略一看,...

    详解js中call与apply关键字的作用

    通过call和apply可以调用某个函数,并且显式地指定该函数内部的this变量的值。 ### call和apply的基本概念 call方法接受一个参数列表,而apply方法接受一个包含多个参数的数组。两者第一个参数都是要设置为函数...

    JS中的call、apply、bind方法详解.pdf

    2. call和apply方法直接执行函数,而bind方法需要再次调用。 3. bind方法返回一个新的函数,而call和apply方法则不返回新的函数。 五、运用场景 1. 实现继承:可以使用call方法来实现继承,例如: ```javascript ...

    Javascript中call,apply,bind方法的详解与总结

    这是因为在JavaScript中,所有的函数都继承自Function原型,而Function原型上定义了call、apply和bind这三个方法。通过检测Function.prototype.hasOwnProperty('call')、Function.prototype.hasOwnProperty('apply')...

    javascript技术难点(三)之this、new、apply和call详解

    JavaScript中的this、new、apply和call是理解JavaScript面向对象编程的关键知识点。首先,我们要知道,this关键字在JavaScript中表示当前上下文的对象,但它并不像Java中的this那样始终指向同一个对象。JavaScript的...

    js继承call()和apply()方法总结

    JavaScript 中的 `call()` 和 `apply()` 方法是两种非常重要的函数调用方式,它们在继承和对象间共享行为时发挥着关键作用。本文将详细解析这两种方法的定义、用途以及如何在实际场景中应用。 1. `call()` 方法 `...

    javascript call和apply方法

    在实际开发中,`call`和`apply`常常用于继承、对象的模拟以及在不支持箭头函数(箭头函数不会创建自己的`this`,而是捕获其所在(定义时)的作用域的`this`值)的环境下实现事件处理等场景。例如,当你需要在不同的...

    JavaScript中的this,call,apply使用及区别详解

    在深入探讨JavaScript中this关键字、call和apply方法之前,...通过对this指向的深入掌握以及合理运用call和apply,开发者可以在不同的执行上下文之间灵活切换,处理各种复杂的逻辑需求,编写出更加健壮和可维护的代码。

    浅谈javascript中的call、apply、bind

    因为bind方法不会立即执行函数,这就解决了call和apply方法在事件绑定函数中使用的问题。因为在事件绑定函数中,我们希望函数在事件触发时由JS内部自动执行,而不是手动执行,所以不能使用会立即执行函数的call或...

    玩转方法:call和apply

    在JavaScript中,`call` 和 `apply` 是两种非常重要的函数调用方式,它们都是在Function对象的原型上定义的,允许我们改变函数调用时的上下文(即`this`值)以及传递参数。这两种方法的核心作用在于实现函数的动态...

    JS中call和apply函数用法实例分析

    在JavaScript中,`call` 和 `apply` 是两种非常重要的函数调用方式,它们都用于改变函数执行时的上下文(即 `this` 指向),并允许你在不同的对象上使用同一个函数,实现了对象间的继承。下面我们将深入探讨这两个...

    javascript中call和apply的用法示例分析

    在众多控制函数调用的方法中,call和apply是两个非常重要的方法。它们都属于Function.prototype对象的方法,主要用于改变函数的执行上下文,即改变函数内的this指向。尽管这两种方法在很多情况下可以互换使用,但...

    js中apply和call的理解与使用方法

    在不同的执行上下文中,函数的this值会有所不同,而apply和call方法正是用于在调用函数时,显式地指定函数体内this的值。 apply方法定义如下:Function.prototype.apply(thisArg[, argsArray])。apply接受两个参数...

    JS中call/apply、arguments、undefined/null方法详解

    在JavaScript中,`call`和`apply`是两种非常重要的函数调用方式,它们都用于改变函数执行时的上下文环境,即`this`的指向。这两种方法的主要区别在于传递参数的方式。 `call`方法的语法是:`call([thisObj[, arg1[,...

    js代码-generator apply call bind

    在实际开发中,这四个概念常常结合使用,以实现各种高级功能,如异步控制流(通过Generator),对象方法的复用,以及动态改变函数的执行环境等。`main.js`可能包含了利用这些概念实现的具体代码示例,而`README.txt`...

    JavaScript中的apply()方法和call()方法使用介绍

    在实际应用中,apply()和call()方法经常被用于改变函数执行时的上下文环境,尤其是在开发中需要调用某个对象的方法,但又希望借用另一个对象的上下文环境时。它们也经常被用于在JavaScript中实现继承,通过父构造...

    javascript中call apply 的应用场景

    JavaScript中的`call`和`apply`是两种非常重要的函数调用方式,它们的主要作用是改变函数执行时的上下文(即`this`的指向),从而解决特定的问题并提供灵活的编程模式。理解这两个方法对于深入JavaScript编程至关...

Global site tag (gtag.js) - Google Analytics