原生javascript实现classList的代码

看到一个原生JS实现classList的代码,分享一下。

(function(document) {//实现classList
    if (!("classList" in document.documentElement) && Object.defineProperty && typeof HTMLElement !== 'undefined') {

        Object.defineProperty(HTMLElement.prototype, 'classList', {
            get: function() {
                var self = this;
                function update(fn) {
                    return function(value) {
                        var classes = self.className.split(/\s+/),
                                index = classes.indexOf(value);

                        fn(classes, index, value);
                        self.className = classes.join(" ");
                    };
                }

                var ret = {
                    add: update(function(classes, index, value) {
                        ~index || classes.push(value);
                    }),
                    remove: update(function(classes, index) {
                        ~index && classes.splice(index, 1);
                    }),
                    toggle: update(function(classes, index, value) {
                        ~index ? classes.splice(index, 1) : classes.push(value);
                    }),
                    contains: function(value) {
                        return !!~self.className.split(/\s+/).indexOf(value);
                    },
                    item: function(i) {
                        return self.className.split(/\s+/)[i] || null;
                    }
                };

                Object.defineProperty(ret, 'length', {
                    get: function() {
                        return self.className.split(/\s+/).length;
                    }
                });

                return ret;
            }
        });
    }
})(document);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,860评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 我颤巍巍地 把心伸向四楼窗外 花开满树的木棉 想起去年 你的祝福 那件暗红格子衫 俘虏的情怀已不在 站在同等高度 ...
    雨后的日子阅读 116评论 0 2
  • 13号云淡风轻 白帽: 平时自己喜欢看点闲书,但真正比较有计划学习,是在2016下半年开始,加入两个交费读书团,一...
    那条恋恋不舍的路阅读 709评论 0 1
  • 学画难吗?美术教育家徐悲鸿先 生曾说过,有中等以上智力的人,通过努力,都能学好绘画。看来只要肯努力,钻进去,逐渐摸...
    剑舞春秋阅读 832评论 1 6