`
biyeah
  • 浏览: 203317 次
  • 来自: ...
社区版块
存档分类
最新评论

javascript中的bind

 
阅读更多
http://www.prototypejs.org/api/function/bind

In JavaScript, functions are executed in a specific context (often referred to as “scope”). Inside the function the this keyword becomes a reference to that scope. Since every function is in fact a property of some object—global functions are properties of the window object—the execution scope is the object from which the function was called, or (more precisely) the object that holds a reference to the function:


window.name = "the window object"

function scopeTest() {
  return this.name
}

// calling the function in global scope:
scopeTest()
// -> "the window object"

var foo = {
  name: "the foo object!",
  otherScopeTest: function() { return this.name }
}

foo.otherScopeTest()
// -> "the foo object!"

Because of the dynamic nature of the language, we can’t be sure that, for instance, otherScopeTest() will always be called on our foo object. The reference to it can be copied somewhere else, like on the window object:


// ... continuing from the last example

// note that we aren't calling the function, we're simply referencing it
window.test = foo.otherScopeTest
// now we are actually calling it:
test()
// -> "the window object"

The last call demonstrates how the same function can behave differently depending on its execution scope.

When you begin passing around function references in your code, you often want them to become fixated on a specific scope. Prototype can guarantee that your function will execute with the object you want under the this keyword just by invoking bind on it. You can also save the returned function and use it multiple times if you need so.

Examples
The code below is simply proof-of-concept:

var obj = {
  name: 'A nice demo',
  fx: function() {
    alert(this.name);
  }
};

window.name = 'I am such a beautiful window!';

function runFx(f) {
  f();
}

var fx2 = obj.fx.bind(obj);

runFx(obj.fx);
runFx(fx2);
分享到:
评论

相关推荐

    浅析Javascript中bind()方法的使用与实现

    JavaScript中的`bind()`方法是一个非常重要的工具,它用于创建一个新的函数,在这个新函数中,`this`关键字被绑定到了指定的对象。在JavaScript中,`this`的值取决于函数调用的方式,这可能导致在某些场景下难以预测...

    浅析Javascript中bind()方法的用法与实现_.docx

    JavaScript中的`bind()`方法是一个非常重要的函数,它主要用于改变函数内部`this`的指向,以及创建带有预定义参数的新函数。下面将详细讲解`bind()`的用法和实现原理。 首先,`bind()`方法的基本用法是接收一个或多...

    javascript中bind函数的作用实例介绍

    在JavaScript中,bind函数是一个非常有用的功能,它属于Function对象的一个方法。它主要用于改变函数的上下文(this)指向,使之绑定到指定的对象上。bind函数不会立即执行函数,而是返回一个新的函数实例,该函数在...

    Javascript中从学习bind到实现bind的过程

    ### Javascript中bind方法的理解与实现 #### 1. bind方法的基本概念 JavaScript中的`bind`方法是一个重要的函数方法,它可以用来创建一个新的函数,并且在新函数被调用时,可以指定这个新函数的`this`关键字绑定到...

    javascript中利用柯里化函数实现bind方法_.docx

    柯里化在JavaScript中通常用于创建具有特定上下文(`this`关键字指向)的函数,这正是`bind`方法的核心功能。 `bind`方法是JavaScript中的一个内置函数,它的主要作用是改变函数内部`this`的指向,以及可以预先设置...

    浅谈js中的bind

    JavaScript中的bind方法是ES5标准引入的Function对象的一个方法。它允许我们创建一个新的函数,该函数在被调用时,其this关键字会被永久设置为我们所指定的值。与bind方法功能类似的方法还有call和apply。这三种方法...

    javascript中的Function.prototye.bind

    函数绑定(Function binding)很有可能是你在开始使用JavaScript时最少关注的一点,但是当你意识到你需要一个解决方案来解决如何在另一个函数中保持this上下文的时候,你真正需要的其实就是 Function.prototype.bind()...

    javascript中apply、call和bind的用法区分_.docx

    ### JavaScript中apply、call和bind的用法区分 在JavaScript编程中,`apply`、`call`和`bind`这三个方法被广泛用于改变函数内部`this`的指向,这对于理解和编写复杂的JavaScript代码至关重要。虽然它们的功能相似,...

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

    JavaScript 中的 call、apply、bind 方法详解 JavaScript 中的 call、apply、bind 方法是 Function 对象自带的三个方法,这三个方法的主要作用是转变函数中的 this 指向,从而可以达到“接花移木”的效果。下面将对...

    浅谈javascript中的call、apply、bind.doc

    浅谈javascript中的call、apply、bind.doc

    javascript bind绑定函数代码

    JavaScript中的`bind`函数是JavaScript语言的一个重要特性,主要用于改变函数内部`this`的指向。在JavaScript中,`this`的值取决于函数是如何被调用的,而不是定义时的位置。因此,`bind`函数的存在解决了`this`上...

    开启Javascript中apply、call、bind的用法之旅模式

    总结来说,apply、call和bind是JavaScript中非常重要的函数方法,它们提供了控制函数上下文的能力,无论是直接调用函数、扩展数组元素,还是改变对象的方法调用,这些方法都是不可或缺的工具。掌握它们的用法,能够...

    javascript之bind使用介绍

    前几天看到一个面试题,题目是这样的: 请你说说对javascript中apply,call,bind的理解? 首先apply和call是老生常谈的东西,但是对于bind,我愣了下,因为这个词是jquery中使用频率很高的一个方法,用来给DOM元素...

    前端开源库-react-autobind

    React Autobind 是一个在前端开发中常用的工具库,尤其在使用React框架时。这个库主要解决的问题是JavaScript中的上下文(this)丢失问题。在React组件中,当我们定义了一个方法并在事件处理或者某些需要调用组件...

    跟我学习javascript的call(),apply(),bind()与回调

    JavaScript中的`call()`, `apply()`, 和 `bind()` 是函数调用的三种方式,它们主要用来改变函数执行时的上下文(即`this`的指向)。这些方法都是Function对象的原型方法,也就是说,所有函数都具备这些特性。 1. `...

    JavaScript中的prototype.bind()方法介绍

    在JavaScript编程中,函数绑定是一个常见的需求,尤其是在对象的方法中使用事件处理器或者异步回调函数时,需要确保函数中的this关键字指向期望的对象。传统的做法是使用变量如self或that来保存this引用,但这种方法...

Global site tag (gtag.js) - Google Analytics