Я исследовал то же самое ... Прежде всего, конечно, вы не можете просто сделать это + = x, 'this' это объект, вы не можете использовать оператор + на объектах.
Есть методы "за сценой", которые вызываются - например,
String.prototype.example = function(){ alert( this ); }
на самом деле звонит
String.prototype.example = function(){ alert( this.valueOf() ); }
Так что вам нужно найти соответствующее значение, которое делает обратное - что-то вроде этого .setValue (). За исключением того, что нет ни одного. То же самое относится и к номеру.
Даже встроенные методы связаны этим
var str = 'aaa';
str.replace( /a/, 'b' );
console.log( str ); // still 'aaa' - replace acts as static function
str = str.replace( /a/, 'b' );
console.log( str ); // 'bbb' - assign result of method back to the object
На некоторых других объектах вы можете; например, на дату:
Date.prototype.example = function(){
this.setMonth( this.getMonth()+6 );
};
var a=new Date();
alert(a.getMonth());
a.example();
alert(a.getMonth());
Это раздражает, но вы идете