javascript 函数绑定问题

废话不多说,上代码:


    Function.prototype.bind = function(context) {

        var self = this;

        return function() {

            self.apply(context, arguments);

        };

    };

    var Animal = {

        name: 'Cat',

        getName: function() {

            //console.log(this.name);

            return this.name;

        }

    };

    var Animal2 = {

        name: 'Dog'

    };

    

    var dog = Animal.getName.bind(Animal2)()

    

    console.log(dog) //undefined

问题来了,为啥输出不是Dog而是undefined。

但是 如果把getName中的return 替换成 console.log(this.name),便可输出Dog。

求解释


浮云间
浏览 455回答 1
1回答

眼眸繁星

此处使用闭包返回一个函数,要想有输出需要返回的这个函数要return得到的结果
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript