• 《阿古顿巴》藏语版在藏语卫视首播 2019-09-06
  • 晋中市“三同步”推动互联网治理创新 2019-08-27
  • 法媒:研究称美国人常用药物或增加抑郁风险 2019-08-27
  • 宝贝是地名,你能想到这么浪漫的地名在哪儿吗? 2019-08-15
  • 何树山副省长到方圆机电调研指导工作 2019-08-15
  • 彩票双色球历史开奖结果:js bind 函数 使用闭包保存执行上下文

    来源:本网整理
    复制代码 代码如下:
    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!"
    var foo_otherScopeTest = foo.otherScopeTest;
    foo_otherScopeTest();
    // –> "the window object"

    如果你希望将一个对象的函数赋值给另外一个变量后,这个函数的执行上下文仍然为这个对象,那么就需要用到bind方法。
    bind的实现如下:
    复制代码 代码如下:
    // The .bind method from Prototype.js
    Function.prototype.bind = function(){
    var fn = this, args = Array.prototype.slice.call(arguments), object = args.shift();
    return function(){
    return fn.apply(object,
    args.concat(Array.prototype.slice.call(arguments)));
    };
    };

    使用示例:
    复制代码 代码如下:
    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);

    参考:
    //www.prototypejs.org/api/function/bind
    PS:
    才发现prototypejs的API文档解释的这么详细,一定要花点时间多看看了。
    我的简单的实现:
    复制代码 代码如下:
    Function.prototype.bind = function(obj) {
    var _this = this;
    return function() {
    return _this.apply(obj,
    Array.prototype.slice.call(arguments));
    }
    }
    var name = 'window',
    foo = {
    name:'foo object',
    show:function() {
    return this.name;
    }
    };
    console.assert(foo.show()=='foo object',
    'expected foo object,actual is '+foo.show());
    var foo_show = foo.show;
    console.assert(foo_show()=='window',
    'expected is window,actual is '+foo_show());
    var foo_show_bind = foo.show.bind(foo);
    console.assert(foo_show_bind()=='foo object',
    'expected is foo object,actual is '+foo_show_bind());

    彩票双色球历史开奖结果 www.s9h6.com

  • 本文相关:
  • JavaScript打字小游戏代码
  • JavaScript中的property和attribute介绍
  • js使用函数绑定技术改变事件处理程序的作用域
  • javascript判断ie浏览器6/7版本加载不同样式表的实现代码
  • Jquery异步请求数据实例代码
  • javascript获得服务器端控件的ID的实现代码
  • js字符编码函数区别分析
  • javascript (用setTimeout而非setInterval)
  • JavaScript中两个感叹号的作用说明
  • javascript写的简单的计算器,内容很多,方法实用,推荐
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 彩票双色球历史开奖结果 - 频道导航
    Copyright © 2017 彩票双色球历史开奖结果 www.s9h6.com All Rights Reserved
  • 《阿古顿巴》藏语版在藏语卫视首播 2019-09-06
  • 晋中市“三同步”推动互联网治理创新 2019-08-27
  • 法媒:研究称美国人常用药物或增加抑郁风险 2019-08-27
  • 宝贝是地名,你能想到这么浪漫的地名在哪儿吗? 2019-08-15
  • 何树山副省长到方圆机电调研指导工作 2019-08-15
  • 幸运赛车开奖直播 梭哈规则 五子成龙游戏 湖南11选5 幸运农场远号辅助软件 腾讯捕鱼游戏技巧 大学生赚钱 足球彩票14场胜负彩进球彩半全场 七乐彩走势图彩宝网 神算子四肖中特免费资料 大乐透第17087开奖号码 二肖中特免费公开资料 江苏时时彩开奖走势图 奥博真人龙虎斗平台 任选9场历史最低奖金