簡單地說,爲什麼String.prototype使用標準大括號和鍵值對記錄字符串對象,並且Array.prototype將數組對象記錄爲數組,方括號和值? 爲什麼String.prototype將它的對象記錄爲一個標準對象,而Array.prototype將它的對象記錄爲標準數組?
String.prototype.test = function(){
console.log(this); // logs { '0': 't', '1': 'e', '2': 's', '3': 't' }
};
var str = 'test';
str.test();
Array.prototype.test1 = function(){
console.log(this); // [1,2,3,4]
};
var arr = [1,2,3,4];
arr.test1();
'this'在一個字符串的方法是一個字符串對象。爲什麼會讓你感到驚訝,你可以在字符串對象上調用字符串方法? 'Array'確實遵循相同的模式 - 您可以添加方法並在這些方法中訪問'this'。不知道你在問什麼'Array'。 – jfriend00 2014-09-27 07:01:59
當您在發佈的原型中記錄「this」時,它是一個對象,因爲它具有鍵和值。它令我感到驚訝,因爲如果你嘗試在任何其他類型的對象上調用字符串方法,它將不起作用。我的問題是什麼使一個字符串對象不同於常規對象並且是唯一的? – user2770599 2014-09-27 07:06:56
此外,如果您在數組原型中記錄'this',它將記錄一個數組而不是一個對象..不遵循相同的模式。 – user2770599 2014-09-27 07:07:36