在javascript中创建一个stringToSlug()原型函数

时间:2012-10-12 14:28:53

标签: javascript jquery

我使用了答案here作为示例,但我更愿意这样写:value.stringToSlug()

所以我把它改成了这个:

// String to slug
String.prototype.stringToSlug = function(str) {
      str = str.replace(/^\s+|\s+$/g, ''); // trim
      str = str.toLowerCase();
      str = str.replace(/[^a-z0-9 -]/g, '') // remove invalid chars
               .replace(/\s+/g, '-') // collapse whitespace and replace by -
               .replace(/-+/g, '-'); // collapse dashes
      return str;
};

如果我像这样传递字符串,它会起作用:

var value = $(this).val();
value.stringToSlug(value);

1 个答案:

答案 0 :(得分:11)

如果您正在修改任何原型,您可以利用this引用对象本身的事实;在这种情况下,它指向您正在调用方法的字符串:

String.prototype.stringToSlug = function() { // <-- removed the argument
    var str = this; // <-- added this statement

      str = str.replace(/^\s+|\s+$/g, ''); // trim
      str = str.toLowerCase();
      str = str.replace(/[^a-z0-9 -]/g, '') // remove invalid chars
               .replace(/\s+/g, '-') // collapse whitespace and replace by -
               .replace(/-+/g, '-'); // collapse dashes
      return str;
};

然后这样打电话:

$(this).val().stringToSlug();