天天看点

call apply bind区分

    //call  apply  bind  相同点this指向发生改变

            var obj1={

                name:"obj1",

                sayhello:function(){

                    console.log(this);

                },

                add:function(x,y){

                    console.log(x+y);

                }

            };

            var obj2={

                name:"obj2",

            };

            //不同点

            obj1.add.call(obj2,1,2); //传的是参数列表

            obj1.add.apply(obj2,[1,2]);//传的是数组

            obj1.add.bind(obj2,1,2)();//写法一    bind加()才会被调用

            obj1.add.bind(obj2)(1,2);//写法二