迅雷前端

写的不太好,不过还是都AC了

第一题修改Bind函数

var self = null
Function.prototype.bind = function() {
    if (self == null){
        self = this
    }
    var context = [].shift.call(arguments),
        args = [].slice.call(arguments);
    return function() { 
        return self.apply(context, [].concat.call(args, [].slice.call(arguments))); 
    }
};

评论区 @ququququc 第一题的解决方案,这个更好

Function.prototype.bind = function () {
    var self = this.self || this,
        context = [].shift.call(arguments),
        args = [].slice.call(arguments),
        res = function () {
            return self.apply(context, [].concat.call(args, [].slice.call(arguments)));
        }
    res.self = this
    return res
};

第二题后缀

String.prototype.getSuffixList = function (suffix) {
    var result = "",
        strs = this.split(" "),
        LEN = strs.length,
        map = {},
        res;
    for (var i = LEN - 1; i >= 0; i--) {
        res = strs[i].indexOf(suffix);
        if (res != -1) {
            if (strs[i] in map) {
                map[strs[i]]++
            } else {
                map[strs[i]] = 1
            }
        }
    }
    var keys = Object.keys(map).sort(function (a, b) { return map[b] - map[a] });
    for (var j = 0; j < keys.length; j++) {
        result += keys[j] + "=" + map[keys[j]] + ","
    }
    return result.substring(0, result.length - 1);//字符串
};
#迅雷##前端工程师#
全部评论
第二题跟你写的差不多,测试用例自己也都过了,但是就是0%,可能是什么原因
点赞 回复
分享
发布于 2017-09-19 20:35
难受
点赞 回复
分享
发布于 2017-09-19 20:40
联想
校招火热招聘中
官网直投
第一个bind函数写的还是很棒的,赞!
点赞 回复
分享
发布于 2017-09-19 20:47
迅雷前端不是昨天就考了吗
点赞 回复
分享
发布于 2017-09-19 20:54
楼主 那个self为啥用的是全局变量~我好像和你不同的只有这个地方~但是我是0 https://www.nowcoder.com/discuss/44545
点赞 回复
分享
发布于 2017-09-19 20:55
迅雷前端我昨天考的是什么情况
点赞 回复
分享
发布于 2017-09-19 20:58
self不能设置成全局的- -。。。假如说两个函数分别bind的话,你的self永远绑的第一个。
点赞 回复
分享
发布于 2017-09-19 21:09
楼主写的好棒,给你打call
点赞 回复
分享
发布于 2017-09-19 21:53

相关推荐

头像
03-15 17:56
C++
点赞 评论 收藏
转发
点赞 10 评论
分享
牛客网
牛客企业服务