• 关于bind、call以及apply


    call以及apply的用法
        1、调用函数
        function foo(n){
            console.log(n);
        }
        foo(1);
        foo.call(null,2);
        foo.apply(null,[3]);
        2、改变所调用的函数的内部的this值的指向
        var a=1;
           function foo(b){
               console.log(this.a+b);
           }
           foo(2);
           foo.call({a:3},4);
           foo.apply({a:5},[6]);
           3、借用其他对象的方法
           var arr=[12,34,6,32,12,43];
           var ret=Math.max.apply(null,arr);
           console.log(ret);
        4、把类数组转换成数组
        var obj={0:'1',1:'2',length:2};
        var ret=[].slice.call(obj);
        console.log(ret);
     
     
     

    关于slice的用法
        var arr=[12,23,45,87];
        var arr1=arr.slice(0,2);
        console.log(arr1);
        var arr2=[23,56,76];
        var ret=arr.slice.call(arr2,0,2);
        console.log(ret);
        var rets=[].slice.call(arr2,0,2);
        console.log(rets);
        var retss=Array.prototype.slice.call(arr2,0,2);
        console.log(retss);
     

     
        关于push的用法
        var arr=[];
        arr.push('hello');
        [].push.call(arr,'hi');
        [].push.apply(arr,['ni','hao']);
        console.log(arr);
        bind方法的使用
        bind是ES5的新特性,作用是改变函数内部的this指向
        bind本身不会调用函数,仅仅会改变函数内部的this指向,并且返回一个新的函数(新函数唯一的变化就是this变了,编成了bind的第一个参数)
        var a=1;
        var b=2;
        function foo (c) {
            console.log(this.a+this.b+c);
        }
        foo(1);
        var fn=foo.bind({
            a:3,
            b:4
        },1);
        fn();
     

     
        什么时候需求使用bind
        var obj={
            a:1,
            b:2
        };
        setTimeout((function(){
            console.log(this.a+this.b);
        }).bind(obj),1000);
     
     
     
        var fn=(function(){
            console.log(this.a+this.b);
        }).bind(obj);
        setTimeout(fn,1000);
     
     
     
        setTimeout((function(){
            return (function(){
                console.log(this.a+this.b);
            }).bind(obj);       
        })(),1000);
  • 相关阅读:
    各位AS3各种验证在这里,邮箱 身份证 ...
    各位同学还在为AS3在IE透明模式下弹出新窗口而烦恼吗?
    Flash As3 通过二进制[ByteArray]判断真实的文件类型
    【A8笔记1】Alternativa 8.5.0 在Flash、Fb、Fd中的配置
    超酷光带效果
    flash 墙
    A3D CoverFlow图片展示效果
    Windows8Metro模式IE10放弃Flash的支持
    html5 控件整理
    AS3中JSON的基本应用实例
  • 原文地址:https://www.cnblogs.com/hughman/p/6816701.html
Copyright © 2020-2023  润新知