2013-11-23 63 views
0

我如何替換原型並使下面的代碼工作?換句話說,我想用相同的含義/邏輯編寫代碼而不使用原型。原型在Javascript中的替代方案

String.prototype.replaceAt = function(index, character) { 
    return this.substr(0, index) + character + 
     this.substr(index + character.length);    
} 
+4

您可以簡單地將其定義爲對象的函數/方法。 –

+0

Mr.Ahmed我試圖實現你的方法,但由於某種原因它不工作。是否有可能做一個單獨的功能,可以做同樣的工作。我唯一的問題是,我無法公開展示我的所有項目。是否可以私下與你溝通? – user2995331

+0

你能告訴我你是如何定義和使用它?那裏可能有錯誤...... –

回答

1

創建它作爲一個自定義的工具對象的方法 -

var StringUtils = {}; 

StringUtils.replaceAt = function (str, index, character) { 
    return str.substr(0, index) + character + 
     str.substr(index + character.length); 
} 

,然後調用它像這樣 -

var str = "Hello"; 
StringUtils.replaceAt(str, 0, "A"); 
0

您只需將它定義爲一個函數,並使用打電話或申請原型方法

replaceAt = function(index, character) { 
    return this.substr(0, index) + character + this.substr(index+character.length); 
} 

如何使用?

var str = "Javascript is Awesome"; 
replaceAt.call(str, 0, "A"); 
// or 
replaceAt.apply(str, [0, "A"]); 
+1

您會發現,在函數內強制使用'this'使用'apply' /'call'並不是一個好主意。這不直觀,因此可以創建難以發現的錯誤。 –

+0

@SayemAhmed確實,我不確定提問者對「相同的意義/邏輯」有多極端。你的方法是我可能會這樣做。 – Ben