bind方法代替闭包

<a href="JavaScript:">a</a>
<a href="JavaScript:">b</a>
<a href="JavaScript:">c</a>
<a href="JavaScript:">d</a>
<a href="JavaScript:">e</a>
<script>
var i,s=document.querySelectorAll("a");
for(i=0;i<s.length;i++)
  s[i].addEventListener("click",function(){
    alert(this); //bind的第一个参数可以在函数内使用this得到
  }.bind(i)/*这里对匿名回调函数bind一个参数*/);
</script>

这里的bind可不是事件,只是把函数绑定上默认参数的方法而已。

 <script type="text/javascript">
        var f, o, fo, name = "SB";
        o = { name: "次碳酸钴" };
        f = function (e) { console.log(this.name + ":" + e) };
        fo = f.bind(o, "颤抖吧人类!");

        f("直接调用时参数是有效的!");
        fo("这里的参数不会传到e!");
    </script>

通过代码可知: bind 改变了原来的 function 参数

时间: 2024-10-29 19:10:58

bind方法代替闭包的相关文章

如何在JavaScript中正确引用某个方法(bind方法的应用)

在JavaScript中,方法往往涉及到上下文,也就是this,因此往往不能直接引用,就拿最常见的console.log("info…")来说,避免书写冗长的console,直接用log("info…")代替,不假思索的会想到如下语法: 1 var log = console.log; 2 log("info…"); 很遗憾,运行报错:TypeError: Illegal invocation. 为啥呢?对于console.log("i

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

在 javascript之 this 关键字详解 文章中,谈及了如下内容,做一个简单的回顾: 1.this对象的涵义就是指向当前对象中的属性和方法. 2.this指向的可变性.当在全局作用域时,this指向全局:当在某个对象中使用this时,this指向该对象:当把某个对象的方法赋值给另外一个对象时,this会指向后一个对象. 3.this的使用场合有:在全局环境中使用:在构造函数中使用,在对象的方法中使用. 4.this的使用注意点,最重要的一点就是要避免多层嵌套使用this对象. 对this

用bind方法保持this上下文

最近自学JavaScript,学到bind方法这块儿有些地方不太明白,自己就查了些资料,结合自己的理解写了这篇文章以备后面回顾用...其实应该还是搬砖为主吧. 什么是this对象 先来说说什么是this对象吧,每个函数在调用的时候都会自动获取两个特殊变量:this和arguments对象.this值具体是指哪个对象是和该函数的执行环境相关的.如果是作为对象的方法,那么this就是对象实例本身:如果是一个全局函数,那么this就是window对象.用一句话来概括,this就是调用这个方法的对象.

js 手动实现bind方法,超详细思路分析!

壹 ? 引 在 js 实现call和apply方法 一文中,我们详细分析并模拟实现了call/apply方法,由于篇幅问题,关于bind方法实现只能另起一篇. 在模拟bind之前,我们先了解bind的概念,这里引入MDN解释: bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用. 说的通俗一点,bind与apply/call一样都能改变函数this指向,但bind并不会立即执行函

关于bind()方法

1.Function.prototype.bind返回一个新的函数对象,该函数对象的this绑定到了thisArg参数上.从本质上讲,这允许你在其他对象链中执行一个函数. 2.bind()--也是改变函数体内this的指向; bind会创建一个新函数,称为绑定函数,当调用这个函数的时候,绑定函数会以创建它时传入bind()方法的第一个参数作为this,传入bind()方法的第二个及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数: bind与apply.call最大的区

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

柯理化函数思想:一个js预先处理的思想:利用函数执行可以形成一个不销毁的作用域的原理,把需要预先处理的内容都储存在这个不销毁的作用域中,并且返回一个小函数,以后我们执行的都是小函数,在小函数中把之前预先存储的值进行相关的操作处理即可: 柯里化函数主要起到预处理的作用: bind方法的作用:把传递进来的callback回调方法中的this预先处理为上下文context; /** * bind方法实现原理1 * @param callback [Function] 回调函数 * @param con

JS中的call、apply、bind方法

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

call,apply,bind方法的总结

一般用来指定this的环境,在没有学之前,通常会有这些问题. var a = {     user:"Lenovointer",     fn:function(){         console.log(this.user);     } } var b = a.fn; b(); //undefined 1.call() var a = {     user:"Lenovointer",     fn:function(){         console.lo

call() , apply() , bind() 方法,

先来说说call() 和 apply()方法: 在<javascript高级程序设计>中有提到:函数也是对象,函数原型链的顶层实际上是指向Object的.既然函数是对象,那么自然就具有属性和方法." 每个函数都包含两个非继承而来的方法  call() , apply() " call() , apply() , 这两个方法其本质就是设置函数体内this对象指向的值,换个说法来理解这句话,一个对象可以通过call() 和 apply() 来调用其他对象的方法.比如说对象A拥有