【发布时间】:2010-09-21 00:43:42
【问题描述】:
我想知道为什么向字符串文字的原型添加方法似乎可行,但添加属性却不行?我正在玩与this question 相关的想法,并且有以下代码:
String.prototype._str_index1 = 0;
String.prototype._str_reset = function() {
this._str_index1 = 0;
};
String.prototype._str_substr = function(len) {
var ret = this.substr(this._str_index1, len);
this._str_index1 = this._str_index1 + len;
return ret;
};
var testString = new String('Loremipsumdolorsitamet,consectetur');
log(testString._str_substr(5));
log(testString._str_substr(4));
这很好用。但是,如果我将倒数第三行更改为:
var testString = 'Loremipsumdolorsitamet,consectetur';
...看起来虽然_str_substr 方法存在并且可以在字符串文字上调用,但属性_str_index1 的值始终为0。
怎么了?
【问题讨论】:
-
大多数你称之为“字符串文字”的东西,实际上被称为“字符串原语”:文字是一种描述字符串的语法,例如,分配一个字符串 (或数字、布尔值、对象等)到变量;原始值是变量和对象可以包含的非复合值(除了(其他)对象)。
-
除非它不是......'indexOf' 不是一个函数时调用一个字符串......
标签: javascript