zoukankan      html  css  js  c++  java
  • 关于js的this上下文环境绑定

    javascript的this关键字很特别和actionscript2.0时期this指向是一样的,如果你以前是个actionscript2.0的coder那肯定是往事不堪回首。actionscript3.0以后this关键字就是指向类本身,而javascript至今还是未实现this始终指向类本身的功能。
    新版本的ECMAScript5中已经加入了bind函数以控制this关键字的绑定,但是在这之前最好还是自己实现bind函数,通过判断Function.prototype.bind是否支持来实现自己的bind函数,如果已经实现则使用浏览器原生支持的方法。
    1、简易的绑定this到某对象上

    if(!Function.prototype.bind){
    Function.prototype.bind = function(obj){
    var self = this;
    return function(){
    return self.apply(obj);
    }
    };
    }

    使用方法:

    var foo = {
    name:'foo';
    sayName: function(){
    console.log(this.name);
    }
    }
    foo.sayName.bind(foo);

    2、prototype框架使用的this绑定方法可传递参数

    if (!Function.bind) {
            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)));
                };
            };
        };

    使用方法:

    func.bind(this, 1,2,3);//绑定并传递额外的参数1,2,3等

  • 相关阅读:
    求文件的hash值(基于SHA3的Hash)
    Discrete Log Algorithms :Baby-step giant-step 【二】
    非专业填坑
    xml转换csv
    使用PowerShell批量注册DLL到GAC
    ui-grid 中cellTemplate中click事件
    ui-grid样式,表格高度自适应行高,没有滚动条,去掉表头
    ui-grid使用详解
    数组过滤重复元素
    正则表达式验证邮箱
  • 原文地址:https://www.cnblogs.com/goody9807/p/2795204.html
Copyright © 2011-2022 走看看