Javascript:修改字符串's[[PrimitiveValue]]使用“;这个“;
Javascript: modify String's [[PrimitiveValue]] using "this"
我遇到了一个需要对JavaScript原语有深入了解的人的情况。
问题:我想扩展String并添加一个名为"extract"的函数,该函数与"substr"一样,但在返回子字符串的过程中,它也会从原始字符串中删除子字符串。
举个例子,以下内容不起作用。
if (!String.prototype.extract) {
String.prototype.extract = function (delimiter) {
var copyStr = "";
var i = this.indexOf(delimiter);
if (i >= 0) {
copyStr = this.substr(0, i);
console.log(this); <<-- "String"
//This line doesn't work, don't know what [[PrimitiveValue]] is.
this.[[PrimitiveValue]] = this.replace(copyStr + delimiter,"");
// Nor this line works. Can't modify 'this'
this = this.replace(copyStr + delimiter, "");
}
return copyStr;
}
}
然后我可以这样打电话:
var str = "abcdef";
var str2 = str.extract('c');
console.log(str); <<-- this should be 'def'
console.log(str2); <<-- this should be 'abc'
我可以写一个单独的函数,如下所示,返回子字符串和修改后的原始字符串,但这不重要。
function extractSubString(originalStr, delimiter) {
var copyStr = "";
var i = originalStr.indexOf(delimiter);
if (i >= 0) {
copyStr = originalStr.substr(0, i);
originalStr = original.replace(copyStr + delimiter, "");
}
return copyStr;
}
有什么想法吗?
谢谢。
但是在返回子字符串的过程中,它也会从原始字符串中删除子字符串。
字符串是不可变的,这意味着它们的值不能以任何方式修改。