JS中Object的一些关于原型的方法

1、Object.getPrototypeOf(obj)

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

参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/GetPrototypeOf

function Person(){
this.name = 'jack'
}
let man = new Person();
console.log(Object.getPrototypeOf(man) === Person.prototype); //true
console.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()

该方法用于将一个或多个源对象的所有可枚举属性的值复制到目标对象。它将改变目标对象然后返回目标对象。文章来源地址https://www.yii666.com/article/758222.html

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

如果目标对象和源对象中的属性名重复,那么源对象将覆盖掉目标对象的属性值,后面的源对象将覆盖前面的源对象。文章地址https://www.yii666.com/article/758222.html网址:yii666.com文章来源地址:https://www.yii666.com/article/758222.html

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

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对象方法实现深拷贝网址:yii666.com<

 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}}

版权声明:本文内容来源于网络,版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。文本页已经标记具体来源原文地址,请点击原文查看来源网址,站内文章以及资源内容站长不承诺其正确性,如侵犯了您的权益,请联系站长如有侵权请联系站长,将立刻删除

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信图片_20190322181744_03.jpg

微信扫一扫打赏

请作者喝杯咖啡吧~

支付宝扫一扫领取红包,优惠每天领

二维码1

zhifubaohongbao.png

二维码2

zhifubaohongbao2.png