简单扩展原生JS

Simple Extending Native JS

本文关键字:JS 原生 扩展 简单      更新时间:2024-03-15

看看下面的代码,它非常不言自明。如何修改"replaceAt"函数以获得所需结果?

String.prototype.replaceAt = function (at) {
    return this.substring(0, at) + this.substring(at+1, this.length);   
}
var str = "webmaster";
var x = str.replaceAt(2);
console.log(x); // should return "b"
console.log(str); // should return "wemaster"

不能,字符串是不可变的。

另一种方法是返回一个包含替换字符和新字符串的对象或数组。然后将值分别分配给变量"x"answers"str":

String.prototype.replaceAt = function (at) {
    return {
       x: this.substring(at+1, at),
       str: this.substring(0, at) + this.substring(at+1, this.length)
    }   
};
var str = "webmaster";
var result = str.replaceAt(2);
var x = result.x;
str = result.str;
console.log(x);
console.log(str);

然而,利用ES6的"解构"功能,你实际上可以把它归结为一句话:

String.prototype.replaceAt = function (at) {
    return [
       this.substring(at+1, at),
       this.substring(0, at) + this.substring(at+1, this.length)
    ]
};
var str = "webmaster";
[x, str] = str.replaceAt(2);
console.log(x);
console.log(str);