猿问

以下重写bind的函数结果为何不同

    1.第一种方式

        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)))

            }

        }

    2. 第二种方式

        Function.prototype.bind = function(oThis) {

            var fn = this,

                args = Array.prototype.slice.call(arguments,1);

            return function() {

                return fn.apply(oThis, args.concat(Array.prototype.slice.call(arguments)))

            }

        }

function foo() {

            return this.bar

        }

var a = foo.bind({bar: 2},1);

var b = a.bind({bar: 3},2);

var c = b.bind({bar: 4},3);

console.log(c())

//第一种方式是4

//第二种方式是2


萧十郎
浏览 409回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答