鍍金池/ 問答/HTML/ 有沒有什麼方法可以實現(xiàn) 更改 'string'.__proto__ ?

有沒有什麼方法可以實現(xiàn) 更改 'string'.__proto__ ?

有沒有什麼方法
可以修改目前字串的 proto 而不會去修改到 String.prototype.split

class UString extends String
{
    split()
    {
        console.log('UString:split');
        return ['UString:split'];
    }
}

const STR = '???典そこで彼らは\'",オリーブ山と呼ばれる山からエルサレムに帰った。';

{
    let str = STR.toString();

    // 原始
    console.log(1, str.split());
}

{
    let str = STR.toString();

    // 此段代碼 = 無效
    str.__proto__ = Object.assign({}, {
        split: UString.prototype.split,
    });

    console.log(2, str.split());
}

{
    let str = STR.toString();

    // 此段代碼 = 無效
    str.__proto__ = UString.prototype;

    console.log(3, str.split());
}

{
    let str = STR.toString();

    // @FIXME 雖然成功了 但是請看下一段
    str.__proto__.split = UString.prototype.split;

    console.log(4, str.split());
}

{
    let str = STR.toString();

    // @BUG 這裡會出錯 因為修改 str.__proto__ 等於修改 String
    console.log(5, str.split());
}
回答
編輯回答
瞄小懶

對日項目么?

試試這個

str.__proto__ = Object.assign({}, {
        split: new UString().split,
    });

或者

str.__proto__ = new UString();
2017年9月18日 22:38
編輯回答
近義詞
var s = 'test';
var s1 = new String('test');
s.__proto__ = {
  test: function(){
    return 'test'
  }
}; //無效
s1.__proto__ = {
  test: function(){
    return 'test'
  }
}; //有效
typeof s.test;// undefined
s1.test();// test
2018年5月31日 22:00