为什么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();

答案 0 :(得分:3)
因为在方法调用中,this
参数始终(以草率模式)转换为对象。你看到的是一个String
对象,它是从"test"
原始字符串值生成的。您调用方法的数组已经是一个对象,因此没有任何反应,您只需像以前一样获取数组。
如果您使用严格模式,则此演员表不会发生:
String.prototype.test = function() {
"use strict";
console.log(this);
};
var str = 'test';
str.test(); // logs "test"