博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS中Object的一些关于原型的方法
阅读量:5276 次
发布时间:2019-06-14

本文共 1377 字,大约阅读时间需要 4 分钟。

1、Object.getPrototypeOf(obj)

该方法返回 obj 对象的原型对象,等同于 obj.__proto__。获取对象的原型对象推荐使用该方法而不是 obj.__proto__方法

参考:

function Person(){  this.name = 'jack'}let man = new Person();console.log(Object.getPrototypeOf(man) === Person.prototype);   //trueconsole.log(Object.getPrototypeOf(man) === man.__proto__);    //true

 

2、Object.defineProperty()

该方法会直接在一个对象上添加一个新属性,或者修改一个对象的现有属性, 并返回该对象。

Object.defineProperty(obj, prop, descriptor);    //obj:要修改的对象    prop:要添加或修改的属性的名称。   descriptor:将属性描述符。
let obj = {};Object.defineProperty(obj, "key", {  enumerable: false,  configurable: false,  writable: false,  value: "static"});

 

3、Object.assign()

该方法用于将一个或多个源对象的所有可枚举属性的值复制到目标对象。它将改变目标对象然后返回目标对象。

Object.assign(target, source1, source2)        //target:目标对象   source1、source:源对象

如果目标对象和源对象中的属性名重复,那么源对象将覆盖掉目标对象的属性值,后面的源对象将覆盖前面的源对象。

该方法是浅拷贝。假如源对象的属性值是一个指向对象的引用,它也只拷贝那个引用值。

let obj1 = {  a: 0,  b: {    c: 0  }};let obj2 = Object.assign({}, obj1);console.log(obj2); // { a: 0, b: { c: 0}}obj1.a = 1;      obj1.b.c = 3;         //当源对象的属性值是一个对象时,改变该属性,目标对象也随之改变console.log(obj1); // { a: 1, b: { c: 3}}console.log(obj2); // { a: 0, b: { c: 3}}

可以利用JSON对象方法实现深拷贝

let obj1 = {   a: 0,   b: {     c: 0   } }; let obj2 = JSON.parse(JSON.stringify(obj1)); obj1.a = 4; obj1.b.c = 4;    //此时改变obj1属性的值,obj2不会随之改变 console.log(obj2); // { a: 0, b: { c: 0}}

 

转载于:https://www.cnblogs.com/wenxuehai/p/10337389.html

你可能感兴趣的文章
二进制&八进制&十六进制之间的快速转换------ 心算&笔算方法总结
查看>>
The operation couldn’t be completed. (LaunchServicesError error 0.)
查看>>
iOS开发tips总结
查看>>
php每天一题:strlen()与mb_strlen()的作用分别是什么
查看>>
学习MySQL我们应该知道哪些东西?
查看>>
智力面试题汇总,有意思!
查看>>
NYOJ-523 亡命逃窜(三维立体的BFS)
查看>>
HDOJ-3785 寻找大富翁(优先队列)
查看>>
编程中定义的方法报异常问题
查看>>
使用STM32F103ZET霸道主板实现SD卡的读写(非文件系统)
查看>>
工作中收集JSCRIPT代码之(下拉框篇)
查看>>
《转载》POI导出excel日期格式
查看>>
code异常处理
查看>>
git - 搭建最简单的git server
查看>>
.net中从GridView中导出数据到excel(详细)
查看>>
[LeetCode]Single Number II
查看>>
poj3216 Prime Path(BFS)
查看>>
使用IntelliJ IDEA 2016创建maven管理的Java Web项目
查看>>
R语言 线性回归
查看>>
Ubuntu下用cue文件对ape和wav文件自动分轨
查看>>