Object常用方法

1、Object.getPrototypeOf() 返回参数对象上的原型,获取原型对象的标准方法。
在这里插入图片描述
三种特殊原型
在这里插入图片描述
2、Object.setPrototypeOf() 为参数对象设置原型并返回改参数对象,它接收两个参数
第一个是现有对象 第二个实原型对象
在这里插入图片描述
new命令可以用Object.setPrototypeOf()进行模拟
在这里插入图片描述
3、Object.create() 该方法生成的对象继承了它的原型对象的构造函数
语法

Object.create(Object,{item1,item2})

其中Object是要继承的原型对象,item1,item2(非必填),为对象参数的属性对象,实例
在这里插入图片描述
以下三种方式生成的新对象是等价的
在这里插入图片描述
如果不想集成任何属性则可用Object.create(null)
4、Object.prototype.isPrototypeOf()
isPrototypeOf() 判断该对象是都为参数对象的原型

在这里插入图片描述
Object.prototype因为处在原型链的最顶端,所以对各种实例都返回true,只有继承自null的对象除外
5、 Object.prototype.proto 返回该对象的原型,该属性可读写
可以将某个对象设置为另一个对象的原型例
在这里插入图片描述
根据语言标准_proto_属性只有浏览器才需要部署,其它环境没有这个属性,前后两根下划线表示它的本质是一个内部属性不应该对使用者暴露因此应该尽可能少的使用这个属性而是用Object.setPrototypeOf()和Object.getPrototypeOf()来进行原型对象的读写操作
6、获取原型对象的三种方法
obj.proto(只有浏览器有这个属性)
obj.constructor.prototype (手动设置会失效)
Object.getPrototypeOf(obj)
推荐使用第三种
7、Object.getOwnPrototypeNames() 返回参数本身所有属性的键名的数组。不包含继承的属性键名
8、Object.prototype.hasOwnProperty()
返回一个布尔值,用于判断某个属性定义在对象自身还是定义在原型链上。是js中唯一一个处理对象属性时不会遍历原型链的方法
使用示例

Date.hasOwnProperty('length') // true
Date.hasOwnProperty('toString') // false

9,对象拷贝的两种方法
拷贝一个对象应该确保拷贝后的对象与原对象有相同的原型和示例属性

function copyObject(orig) {
  var copy = Object.create(Object.getPrototypeOf(orig));
  copyOwnPropertiesFrom(copy, orig);
  return copy;
}

function copyOwnPropertiesFrom(target, source) {
  Object
    .getOwnPropertyNames(source)
    .forEach(function (propKey) {
      var desc = Object.getOwnPropertyDescriptor(source, propKey);
      Object.defineProperty(target, propKey, desc);
    });
  return target;
}

es6简单写法

function copyObject(orig) {
  return Object.create(
    Object.getPrototypeOf(orig),
    Object.getOwnPropertyDescriptors(orig)
  );
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值