• [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展camelize与dasherize方法(3)


    在此之前,我们已经完成了4个方法: 

    trimLeft, trimRight, trim, capitalize

    本文,我们扩展驼峰式与下划线转化这两个对称的方法

    camelize: 把空格,下划线,中横线后面的首字母大写.

    dasherize: 把空格后面的大写字母,大写字母,下划线后面的大写字母,变成  中横线 + 对应的小写字母:

    如: MozBorderRadius 变成 -moz-border-radius

     1 ; (function (window, undefined) {
     2     function init(obj, s) {
     3         if (s !== null && s !== undefined) {
     4             if (typeof s === 'string') {
     5                 obj.s = s;
     6             } else {
     7                 obj.s = s.toString();
     8             }
     9         } else {
    10             obj.s = s;
    11         }
    12     }
    13 
    14     function G(s) {
    15         init(this, s);
    16     }
    17 
    18     function GhostWu(s) {
    19         return new G(s);
    20     }
    21 
    22     var sProto = String.prototype;
    23     G.prototype = {
    24         constructor: G,
    25         capitalize: function () {
    26             return new this.constructor(this.s.slice(0, 1).toUpperCase() + this.s.substring(1).toLowerCase());
    27         },
    28         trimLeft: function () {
    29             var s;
    30             if (sProto.trimLeft === 'undefined')
    31                 s = this.s.trimLeft();
    32             else
    33                 s = this.s.replace(/^s+/g, '');
    34             return new this.constructor(s);
    35         },
    36         trimRight: function () {
    37             var s;
    38             if (sProto.trimRight === 'undefined')
    39                 s = this.s.trimRight();
    40             else
    41                 s = this.s.replace(/s+$/g, '');
    42             return new this.constructor(s);
    43         },
    44         trim: function () {
    45             var s;
    46             if (typeof sProto.trim === 'undefined') {
    47                 s = this.s.replace(/^s+|s+$/g, '');
    48             } else {
    49                 s = this.s.trim();
    50             }
    51             return new this.constructor(s);
    52         },
    53         camelize : function () {
    54             var s = this.trim().s.replace(/(-|_|s)+(.)?/g, function ( s0, s1, s2 ) {
    55                 return ( s2 ? s2.toUpperCase() : '' );
    56             });
    57             return new this.constructor(s);
    58         },
    59         dasherize : function(){
    60             var s = this.trim().s.replace(/[_s]+/g, '-').replace(/([A-Z])/g, '-$1').replace(/-+/g, '-').toLowerCase();
    61             return new this.constructor(s);
    62         }
    63     };
    64 
    65     window.G = GhostWu;
    66 })(window, undefined);
    console.log( G( 'ghost wu tell you how to learn js').camelize().s );//ghostWuTellYouHowToLearnJs
    console.log( G( 'ghost-wu-tell you how to learn js').camelize().s );//ghostWuTellYouHowToLearnJs
    console.log( G( 'ghost_wu_tell you how to learn js').camelize().s );//ghostWuTellYouHowToLearnJs
    console.log( G( '-moz-border-radius' ).camelize().s );//MozBorderRadius

    console.log( G( 'MozBorderRadius' ).dasherize().s ); //-moz-border-radius
    console.log( G( 'backgroundColor' ).dasherize().s ); //background-color
    console.log( G( 'background color' ).dasherize().s ); //background-color
  • 相关阅读:
    Set.prototype (Set) – JavaScript 中文开发手册
    wordpress插件 : 利用Max Mega Menu实现二级菜单的伸缩
    HTML textarea placeholder 属性
    Number.parseInt (Number) – JavaScript 中文开发手册
    Java 实例 – 获取 URL响应头的日期信息
    PHP date_default_timezone_set() 函数
    SIMD.fromInt32x4Bits (SIMD) – JavaScript 中文开发手册
    使用 mysql_random_data_load 生成随机数据
    python基本数据类型
    day02代码
  • 原文地址:https://www.cnblogs.com/ghostwu/p/7402094.html
Copyright © 2020-2023  润新知