JavaScript 中 Object()是用来做什么的◔ ‸◔?

看到一段代码,其中有 Object()这个方法。但是查了文档没有找到相关的解释,大概猜到是用来把传入的值转换成对象。但不是很确定,希望能找到具体的技术文档说明。

贴上看到的代码:

if (!Object.keys) Object.keys = function(o) {
  if (o !== Object(o))
    throw new TypeError('Object.keys called on a non-object');
  var k=[],p;
  for (p in o) if (Object.prototype.hasOwnProperty.call(o,p)) k.push(p);
  return k;
}
阅读 5.5k
2 个回答

你的理解是对的
文档如下
MDN

先回答你的问题:
Object(obj),是将obj转换成原始对象,只有Object数据类型的经过转换还等于(===)自己


测试代码:

var boolean = true;
var undefiend = undefiend;
var _null = null;
var number = 5;
var string ='example';
var obj={
        boolean:true,
    undefiend:undefiend,
    _null:null,
    number:5,
    string:'example'
}
console.log(Object(boolean));
console.log(boolean === Object(boolean));
console.log(Object.prototype.toStrng.call(Object(boolean)));

console.log(Object(undefiend));
console.log(undefiend === Object(undefiend));
console.log(Object.prototype.toStrng.call(Object(undefiend)));

console.log(Object(_null));
console.log(_null === Object(_null));
console.log(Object.prototype.toStrng.call(Object(_null)));

console.log(Object(number));
console.log(number === Object(number));
console.log(Object.prototype.toStrng.call(Object(number)));

console.log(Object(string));
console.log(string === Object(string));
console.log(Object.prototype.toStrng.call(Object(string)));

console.log(Object(obj));
console.log(obj === Object(obj));
console.log(Object.prototype.toStrng.call(Object(obj)));

结果:
图片描述

结果分析:
javascript的数据类型可以分为两种:原始类型和引用类型。原始类型也称为基本类型或简单类型,javascript基本数据类型包括Undefined、Null、Boolean、Number和String五种,而引用类型也称为复杂类型,在Javascript中是Object。与此相对应,它们的值也分别被称为原始值(primitive value)和复杂值。
所以原始值得经过Object转换后,就不等于(!==)原始值;
原始值被当作构造函数创建的一个对象来使用时,Javascript会将其转换成一个对象,以便可以使用对象的特性和方法,而后抛弃对象性质,并将它变回到原始值

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题