function z(){
var arr = [];
var a = function(){ this.toString = function(){ return 9; };};
arr[0] = new a();
console.log(""+arr[0]); //9
console.log(arr[0]); //a {toString: ƒ}
};
var w = new z();
为何前面有个""+ 就把里面的方法给执行了。两个console.log()的结果不应该是一样的吗
""+arr[0]这一句进行了隐式调用,就是会调用toString方法将arr[0]转字符串,你可以理解为""+arr[0].toString()!所以输出就是 ""+9="9"
输出就是9
""+ 是转字符串
function z() {
var arr = []; // 给变量arr赋值空数组
var a = function () { // 在a函数中设置toString方法返回值为9
this.toString = function () {
return 9;
};
};
arr[0] = new a(); // arr[0]作为a的实例
console.log("" + arr[0]); //"" + arr[0]相当于arr[0].toString 所以返回值 9
console.log(arr[0]); //a {toString: ƒ}
}
var w = new z();