2016-11-20 60 views
0

我試圖改變其protoype函數中的字符串值:字符串原型改變字符串值

String.prototype.myfunction=function(){ 
    this += "a"; 
    return this; 
}; 

但是,因爲它似乎我不能改變的價值。如果我試圖在控制檯上運行,我只是得到錯誤:Uncaught ReferenceError: Invalid left-hand side in assignment

是否可以更改字符串值? 在此先感謝

+0

參見[我如何得到「該=這個」原型工作(http://stackoverflow.com/q/ 28148196/1048572)或[將對象分配給「this」](https://stackoverflow.com/questions/15598549/assign-object-to-this) – Bergi

回答

3

我認爲這與字符串的不變性和this是一個常數的事實有關。

String.prototype.myfunction=function(){ 
    return this + 'a'; 
}; 
+0

我真正想要的是改變它的價值,我知道返回這個+「一個「工作正常。無論如何,感謝您的幫助 – Marcelo43

+0

將JavaScript中的字符串視爲不可變的。改用函數返回的對象。 – Timo

0

字符串是不可變:

如果你的例子是平凡變更爲它工作得很好。您可能需要使用字符數組來代替:

class MyString extends Array { 
 
    constructor(str) { 
 
    super(...String(str)); 
 
    } 
 
    myfunction() { 
 
    this.push("a"); 
 
    return this; 
 
    } 
 
    toString() { 
 
    return this.join(''); 
 
    } 
 
} 
 
var s = new MyString("hello!"); 
 
s.myfunction(); 
 
console.log(s + '');