福州网站建设好的公司,湛江招聘网,全球十大营销策划公司,wordpress调用子栏目1.首先#xff0c;会调用 valueOf 方法#xff0c;如果方法的返回值是一个基本数据类型#xff0c;就返回这个值#xff0c; 如果调用 valueOf 方法之后的返回值仍旧是一个复杂数据类型#xff0c;就会调用该对象的 toString 方法#xff0c; 如果 toString 方法调用之后…1.首先会调用 valueOf 方法如果方法的返回值是一个基本数据类型就返回这个值 如果调用 valueOf 方法之后的返回值仍旧是一个复杂数据类型就会调用该对象的 toString 方法 如果 toString 方法调用之后的返回值是一个基本数据类型就返回这个值 如果 toString 方法调用之后的返回值是一个复杂数据类型就报一个错误。
// 1;
var obj {valueOf: function() {return 1;}
};
console.log(obj ); //1
// 2;
var obj {valueOf: function() {return [1, 2];}
};
console.log(obj ); //[object Object];
// 3;
var obj {valueOf: function() {return [1, 2];},toString: function() {return 1;}
};
console.log(obj ); //1;
// 4;
var obj {valueOf: function() {return [1, 2];},toString: function() {return [1, 2, 3];}
};
console.log(obj ); // 报错 Uncaught TypeError: Cannot convert object to primitive value
2.括展
var arr [new Object(), new Date(), new RegExp(), new String(), new Number(), new Boolean(), new Function(), new Array(), Math] console.log(arr.length) // 9
for (var i 0; i arr.length; i) {arr[i].valueOf function() {return [1, 2, 3]}arr[i].toString function() {return toString}console.log(arr[i] )
}
1、若 return [1, 2, 3]处为 return valueof得到的返回值是 valueof toString 7valueof 说明其他八种复杂数据类型是先调用 valueOf 方法时间对象是先调用 toString 方法
2、改成 return [1, 2, 3]得到的返回值是 9toString 说明执行 valueof 后都来执行 toString