2

尽管我更喜欢这样写,但我已将此处的答案用作示例: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);
4

1 回答 1

13

如果您正在修改任何原型,您可以利用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();
于 2012-10-12T14:32:55.290 回答