JavaScript 复习之 Object 对象

这里介绍对象原生的各种方法。

Object对象的原生方法有两类:对象本身的方法与对象的实例方法。

所谓实例方法就是定义在Object原型对象Object.prototype上的方法,可以被实例直接使用。

一、Object()

Object本身就是一个函数,可以用于将任意值转化为对象。

var obj = Object(1);
obj intanceof Object // true
复制代码

如果Object方法的参数是一个对象,那么他总是返回该对象。

二、Object 构造函数

它不仅可以是一个转换函数,还可以当作构造函数使用。

var obj = new Object();
复制代码

注意,通过var obj = new Object()的写法生成新对象,与字面量的写法var obj = {}是等价的。或者说,后者只是前者的一种简便写法。

var o1 = {a: 1};
var o2 = new Object(o1);
o1 === o2 // true

var obj = new Object(123);
obj instanceof Number // true
复制代码

虽然用法相似,但是Object(value)new Object(value)两者的语义是不同的,前者是将value转换成一个对象,后者是生成一个新对象,但是他的值是value

三、Object 的静态方法

1、Object.keys(), Object.getOwnPropertyNames()

两者都是遍历对象的属性。一般来说两者都是一样,接收一个对象作为参数,返回一个对象属性名的数组。只有涉及不可枚举属性时,才会有不一样的结果。

var a = ['Hello', 'World'];

Object.keys(a) // ["0", "1"]
Object.getOwnPropertyNames(a) // ["0", "1", "length"]
复制代码
2、其他方法
  1. 对象属性模型的相关方法

    • Object.getOwnPropertyDescriptor():获取某个属性的描述对象
    • Object.defineProperty():通过描述对象,定于某个属性
    • Object.defineProperties():通过描述对象,定义多个属性
  2. 控制对象状态的方法

    • Object.preventExtensions():防止对象扩展。
    • Object.isExtensible():判断对象是否可扩展。
    • Object.seal():禁止对象配置。
    • Object.isSealed():判断一个对象是否可配置。
    • Object.freeze():冻结一个对象。
    • Object.isFrozen():判断一个对象是否被冻结。
  3. 原型链相关方法

    • Object.create():该方法可以指定原型对象和属性,返回一个新的对象。
    • Object.getPrototypeOf():获取对象的Prototype对象。

四、Object的实例方法

主要有以下六个:

  • Object.prototype.valueof():返回对象对应的值
  • Object.prototype.toString():返回对象对应的字符串形式
  • Object.prototype.toLocaleString():返回对象对应的本地字符串形式
  • Object.prototype.hasOwnProperty():判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。
  • Object.prototype.isPrototypeOf():判断当前对象是否为另一个对象的原型
  • Object.prototype.propertyIsEnumerable():判断某个属性是否可枚举
Object.prototype.toString

不同数据类型的Object.prototype.toString方法返回值如下。

  • 数值:返回[object Number]

  • 字符串:返回[object String]

  • 布尔值:返回[object Boolean]

  • undefined:返回[object Undefined]

  • null:返回[object Null]

  • 数组:返回[object Array]

  • arguments 对象:返回[object Arguments]

  • 函数:返回[object Function]

  • Error 对象:返回[object Error]

  • Date 对象:返回[object Date]

  • RegExp 对象:返回[object RegExp]

  • 其他对象:返回[object Object]

转载于:https://juejin.im/post/5c73fd776fb9a049d81c7d52

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值