【问题标题】:How to modify this object in "extension" method?如何在“扩展”方法中修改此对象?
【发布时间】:2015-03-09 14:11:38
【问题描述】:

我想将splice 方法添加到String,其行为与Array 的splice 方法完全相同。问题是splice 修改了“this”对象并返回删除的元素。后者没问题,但是修改了“this”怎么写呢?

if (typeof String.prototype.splice != 'function') {
    String.prototype.splice = function (index,count,add) {
        var removed = this.slice(index,index+count);
        this = this.slice(0, index) + (add || '') + this.slice(index + count); // (*)
        return removed;
  };
}

我不能这样写。那么如何修改“this”对象呢?

【问题讨论】:

    标签: javascript extension-methods


    【解决方案1】:

    这是不可能的 - 除了在构造函数中,它不可能分配给 this,并且 String 类型不提供就地修改字符串的函数。

    【讨论】:

    • 简而言之,String 类型是不可变的。
    • @Oday 虽然这是上述内容的隐含效果,但尚不清楚这是否是该语言的正式要求。 MDN 网站没有提及它,我在 ES5 规范中也找不到任何内容。
    • @Oday 谢谢 - 它没有出现在 String 的主要参考页面上。
    猜你喜欢
    • 2012-06-10
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多