• apply与call


    看这个apply真正应用。bind这是一个绑定时间的函数

    var bind=function(object,type,fn){
    if(object.attachEvent){//IE浏览器
    object.attachEvent("on"+type,(function(){
    return function(event){
    window.event.cancelBubble=true;//停止时间冒泡
    object.attachEvent=[fn.apply(object)];//----这里我要讲的是这里
    //在IE里用attachEvent添加一个时间绑定以后。
    //this的指向不是到object对象本身所以。我们绑定的function里的this.id是无法正常工作的。
    //但是如果我们用fn.apply(object)
    //这里可以看出我们是把apply的第一个对象也就是this的指向变更给了object所以this.id就变成了
    //object.id 可以正常工作了。

    }
    })(object),false);
    }else if(object.addEventListener){//其他浏览器
    object.addEventListener(type,function(event){
    event.stopPropagation();//停止时间冒泡
    fn.apply(this)
    });
    }

    }
    bind(document.getElementById("aaa"),"click",function(){alert(this.id)});

    =================================

    js中的call和applay的方法的使用http://www.jb51.net/article/44875.htm

    ===============================================

    call方法的使用:

    需详细的call方法的使用:http://wenku.baidu.com/link?url=U6r4B9bPh5PdzcpylovGS3iWgN9Lj0YK1ICeF-NhwKvw0kxMPBaAgMRm7kcFOc0WJE6-Dy7Ja-a4YuHurDt44Yh47TMoZPakRbNKzLZBTMq

    call方法的使用看在类中,function中使用,这样子只有在创建的对象中才能有体现。类中一般都是类调用,传入this. 而对象调用的话,肯定是调用这个对象的方法然后调用call。 js中创建对象和继承是两回事,我们考虑创建对象了,考虑继承后的类的对象,另一回事。

     ===================

        _sendData: function (url) {
            var src = url;
            if (typeof arguments[0] == "function") {
                src = arguments[0].apply(this, [].slice.call(arguments, 1));
            }
    

      

      var ss = function (a,b,c){
          return 'piao'+a+b+c;
        }
        function a(data){
          var src = data;
          if (typeof arguments[0] == "function") {
              src = arguments[0].apply(this,[].slice.call(arguments, 1));
            //src = arguments[0](arguments.slice(1));
          }
          alert(src);
        }
        a(ss,'a','b','c');
        box.apply([].slice.call(box,1));
    

      

    一个简单的call的方法的使用:

    'use strict';
    
    var Person = function (){
      this.say = function(){
        console.log(this.name);
      }
    }
    
    var p  = new Person();
    p.say.call({name:'aaa'})
    
  • 相关阅读:
    自动化无线网破解工具wifite2
    用Python实现Excel的读写
    Python常见问题系列
    集群搭建
    redis进阶
    android中实现简单的聊天功能
    android中使用setOnKeyListener响应输入事件
    android中使用spinner组件,以key,value的方式
    android中使用spinner组件
    android中使用Nine-Patch图片
  • 原文地址:https://www.cnblogs.com/coding4/p/5446534.html
Copyright © 2020-2023  润新知