我使用了答案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);
答案 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();