2016-03-02 142 views
1

我想將拼接函數添加到String中,如Array的拼接函數。這是代碼賦值中的左手邊無效,「this = xxx」

String.prototype.splice = function(start, len, substr) { 
    var p = this.split(''); 
    p.splice(start, len, substr); 
    this = p.join(''); 
    return this; 
} 

它會顯示

Uncaught ReferenceError: Invalid left-hand side in assignment(…)

回答

2

不能重新分配this。嘗試聲明變量,並使用該:

String.prototype.splice = function(start, len, substr) { 
    var p = this.split(''); 
    p.splice(start, len, substr); 
    var joinedArray = p.join(''); 
    return joinedArray; 
} 

this是一個參考,而不是一個對象。這就是我們所說的「不可變的」。

+0

但它會從陣列的拼接功能不同。 'var p = [1,2,3,4]; p.splice(1,1);'那麼p就是[1,3,4]。 – poplark

0

您不能重新分配this,因爲this定義的值是不可變的,所以您不能以那種方式更改它所引用的內容。

所有你需要做的是

更換

this = p.join(''); return this; 

return p.join(''); 
相關問題