Tôi tự hỏi tại sao có vẻ như việc thêm một phương thức vào nguyên mẫu của một chuỗi ký tự có vẻ hoạt động, nhưng thêm một thuộc tính thì không? Tôi đã chơi với các ý tưởng liên quan đến this question và có mã sau:Đối tượng chuỗi so với chữ - sửa đổi nguyên mẫu?
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));
Điều này làm việc tốt. Tuy nhiên, nếu tôi thay đổi dòng cuối cùng thứ ba nào:
var testString = 'Loremipsumdolorsitamet,consectetur';
... có vẻ như rằng mặc dù các phương pháp _str_substr
tồn tại và có thể được gọi vào chuỗi chữ, giá trị của tài sản _str_index1
luôn là 0.
Có chuyện gì vậy?
* Hầu hết * những thứ bạn gọi là 'chuỗi chữ', được gọi là 'chuỗi nguyên thủy': literals là cú pháp để mô tả chuỗi, ví dụ, để gán một chuỗi (hoặc số, boolean, đối tượng, v.v. .) vào một biến; giá trị nguyên thủy là các giá trị không tổng hợp mà các biến và đối tượng có thể chứa (ngoài các đối tượng khác). –
Trừ khi nó không .... 'indexOf' không phải là một hàm khi được gọi chống lại một chuỗi .... –