Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义替换方法?_Javascript - Fatal编程技术网

Javascript 自定义替换方法?

Javascript 自定义替换方法?,javascript,Javascript,有没有可能创造你自己的习惯,我相信这个词就是‘方法’?例如,类似这样的内容: var str = "test" str.replaceSpecial(); 其中replaceSpessional()将自动用其他内容替换字母e 我之所以对此感兴趣,是因为我想做的是获取字符串,然后运行大量替换操作,所以我希望在调用replaceSpessional()时,它将运行一个函数 谢谢您可以将您的方法添加到String.prototype,它将对所有字符串可用。例如,这就是在大多数库中实现trim()的方

有没有可能创造你自己的习惯,我相信这个词就是‘方法’?例如,类似这样的内容:

var str = "test"
str.replaceSpecial();
其中replaceSpessional()将自动用其他内容替换字母e

我之所以对此感兴趣,是因为我想做的是获取字符串,然后运行大量替换操作,所以我希望在调用replaceSpessional()时,它将运行一个函数


谢谢

您可以将您的方法添加到
String.prototype
,它将对所有字符串可用。例如,这就是在大多数库中实现
trim()
的方式

String.prototype.replaceSpecial = function() {
    return this.replace(/l/g, 'L');
};

"hello".replaceSpecial(); // heLLo
var StringUtils = {
    replaceSpecial: function(str) { .. },
    ..
};

StringUtils.replaceSpecial("hello"); // heLLo
但是,请注意,在本机原型上定义非常特定的功能通常是一种不好的做法。以上是完全相同问题的一个很好的例子。对于这种特殊情况,请考虑使用自定义函数或包装器来完成作业。
function replaceSpecial(str) {
    return str.replace(/l/g, 'L');
}

replaceSpecial("hello"); // heLLo
或者在自定义名称空间下,例如

String.prototype.replaceSpecial = function() {
    return this.replace(/l/g, 'L');
};

"hello".replaceSpecial(); // heLLo
var StringUtils = {
    replaceSpecial: function(str) { .. },
    ..
};

StringUtils.replaceSpecial("hello"); // heLLo

+1.可能值得一提的是,扩充
对象.prototype
数组.prototype
永远都不合适。在一些情况下,修改其他内置构造函数原型也很粗略。。。例如,dynarch日历脚本修改了日期。原型,这最终破坏了其他一些常用脚本,我现在记不起是哪一个了。@no-我不同意这种说法,因为这个问题不断出现,我写了一篇长篇大论。@Anurag Yay!我听腻了“不要用Javascript做任何事情,因为1998年写的一些代码很烂”。我同意可以扩充Object/Array.prototype。只是不要使用或编写愚蠢的代码,例如使用for-in循环遍历数组(非常慢),或者使用for-in循环而不使用
obj.hasOwnProperty(prop)
。仅仅因为人们编写了不好的库,就没有理由不编写应该是好的代码。保持这个习惯。扔掉图书馆。@MooGoo@trinithis-很高兴知道还有其他人厌倦了传统:)