2014-02-15 91 views
2

我正在練習代碼的可讀性和「美化」我的代碼,所以我想學習如何實現這一點。Javascript變量/字符串函數?

我見過其他代碼這樣做,但我不記得他們是做了什麼或如何做。

我要創造我自己的.string功能,像這樣:

var rmbrackets = new function() { 
    return String.replace(/\[.*?\]/g, ""); 
} 
console.log("this is a [test]test!".rmbrackets); 

我想上面的記錄「這是一個考驗!」。 以上只是一個例子,我想用其他許多功能來做到這一點。

我怎樣才能做到這一點?

+0

在JavaScript中,你必須把括號調用函數'「foo」的.rmbrackets當()',而不像Ruby。如果沒有這些parens,你只需要抓取該函數的引用。 –

+0

我發現了。感謝您清理它! –

回答

3

嘗試

String.prototype.rmbrackets = function() { 
    return this.replace(/\[.*?\]/g, ""); 
}; 

這增加了對象的字符串的原型。

此外,您還需要添加()實際執行,所以完整的代碼將

String.prototype.rmbrackets = function() { 
    return this.replace(/\(.*?\)/g, ""); 
}; 
console.log("this is a (test)test!".rmbrackets()); 

在這個例子中,我編輯您的正則表達式來匹配你想要達到的目標。

Demo


如果用馬特·格里爾同意,那麼你可以只創建一個這樣的功能:

function rmbrackets(text) 
{ 
    return text.replace(/\(.*?\)/g, ""); 
}; 
console.log(rmbrackets("this is a (test)test!")); 

因爲如果每個人都這樣做,建於原型將得到污染很快。人們會相互壓倒很多。如果瀏覽器本身添加了一個rmbrackets,也會出現這個問題,您可能會對它有所影響。其他問題包括在循環等中出現的意外屬性。一般來說,JS社區已經同意獨自留下原型。

Demo

+0

這是完美的!謝謝:) –

+0

只要記住改變全球原型就很好迴避。可能最好不要這樣做,如果你打算讓別人使用你的代碼。 –

+0

哦,好的。爲什麼?這會影響執行或加載速度嗎? –

1

嗯......你可以修改原型屬性增加新的功能:

String.prototype.sayHello = function(){ 
    return this + " Hello!"; 
} 

"Blah".sayHello(); // "Blah Hello!" 
+1

你有一些輕微的語法問題,除此之外,這是幾乎什麼OP希望 –

+0

@MattGreer - 是啊,剛纔看到。鍵入着急:) – Josh