yuanyuanbyte/Blog

JavaScript 基础系列之分析 {} 和 [] 的 valueOf() 和 toString() 的结果

yuanyuanbyte opened this issue · 0 comments

本系列的主题是 JavaScript 基础,每期讲解一个技术要点。如果你还不了解各系列内容,文末点击查看全部文章,点我跳转到文末

如果觉得本系列不错,欢迎 Star,你的支持是我创作分享的最大动力。

{} 和 [] 的 valueOf() 和 toString() 的结果是什么?

简单介绍一下 valueOftoString

valueOf()

valueOf() 方法返回指定对象的原始值。

JavaScript调用valueOf方法将对象转换为原始值。你很少需要自己调用valueOf方法;当遇到要预期的原始值的对象时,JavaScript会自动调用它。

toString()

toString() 方法返回一个表示该对象的字符串。

每个对象都有一个 toString() 方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString() 方法被每个 Object 对象继承。

可以使用 toString() 检测对象类型:

var a = Object.prototype.toString;

console.log(a.call("aaa"));
console.log(a.call(1));
console.log(a.call(true));
console.log(a.call(null));
console.log(a.call(undefined));
console.log(a.call([]));
console.log(a.call(function() {}));
console.log(a.call({}));

在这里插入图片描述

{}[]valueOf()toString() 的结果是什么?

注意:可以在谷歌浏览器里直接通过括号(),包括值的方式来调用方法

([]).valueOf()
([]).toString()
({}).valueOf()
({}).toString()

在这里插入图片描述

或者下面的写法 (有点繁琐)

let emptyObj = {};

console.log('emptyObj.valueOf() :>> ', emptyObj.valueOf()); // {}

console.log('emptyObj.toString() :>> ', emptyObj.toString()); // [object Object]

let emptyArr = [];

console.log('emptyArr.valueOf() :>> ', emptyArr.valueOf()); // []

console.log('emptyArr.toString() :>> ', emptyArr.toString()); // ""

在这里插入图片描述

查看全部文章

博文系列目录

  • JavaScript 深入系列
  • JavaScript 专题系列
  • JavaScript 基础系列
  • 网络系列
  • 浏览器系列
  • Webpack 系列
  • Vue 系列
  • 性能优化与网络安全系列
  • HTML 应知应会系列
  • CSS 应知应会系列

交流

各系列文章汇总:https://github.com/yuanyuanbyte/Blog

我是圆圆,一名深耕于前端开发的攻城狮。

weixin