学会Object,只需要这30分钟,喜欢的兄弟们可以点赞收藏,方便查阅哈,上期总结了关于Array的所有方法,有情趣的兄弟们也可以看一看:一篇学会Array原型里的所有方法,你们的点赞就是我最大的动力~~~
assign(target,...source):合并或新建对象,返回一个新对象
const TGs = {tg1:'舔狗一号',tg2:'舔狗二号'}
const girl = { girl: '公主'};
const man = { dog:'颜少连'};
const manyMan = {dog:'其他舔狗',TGs:TGs}
const wanglian1 = Object.assign({}, girl, man);
// result in: { girl: "公主", dog: "颜少连" }
// 当我和妹子组合到了一起,我们会形成一段新的感情,叫网恋。
const wanglian2 = Object.assign( {}, girl, man,manyMan);
// result in :{ girl: "公主", dog: "其他舔狗", TGs: Object { tg1: "舔狗一号", tg2: "舔狗二号", tg3: "舔狗三号" } }
// 当有其他舔狗进来,而他的key和我一样,都是dog,就会取代我的位置,成为新的舔狗,新的网恋
TGs.tg3='舔狗三号'
// assign这种不稳定的网恋模式,只适合浅拷贝,当对象里还要对象的时候,只是引用了指针地址, 后面新进来的舔狗3号,也进入了网恋2的内容中
# defineProperty(obj,props,descriptor):精准修改对象的属性
const girl = {};
Object.defineProperty(girl,'舔狗',{
value: '颜少连', //舔狗的名字
writable: true, // 舔狗的名字是否可被运算符修改
configurable:true, // 舔狗的描述是否可修改
enumerable:true,// 舔狗是否可出现在枚举属性中
// get 和 value 不能共存, writable 和 set 不能共存. 会报错
get:function() {}, //当女神获得舔狗的时候,发表的获奖感言
set:function() {} // 当舔狗被替代的时候,会发告诉自己的好闺蜜
});
freeze(obj):将对象冻结,经常用于循环渲染的大数据,被冻结的数据不会被vue监听,可以增加性能
isFrozen(obj):判断一个对象是否被冻结,是则返回true
const girl = {
TG: '颜少连'
};
Object.freeze(girl);
girl.TG = '吴彦祖';
// Throws an error in strict mode
console.log(girl.TG);
// result in:就算是吴彦祖,也不能代替我舔狗的位置
getOwnPropertyDescriptor(obj,prop):查询对象中,某个值的属性(defineProperty定义的那些属性)
// 咱们上面不是定义了 我是女神的舔狗 嘛
// 这边,咱们就打印出,我这个舔狗在女神中的地位
console.log(Object.getOwnPropertyDescriptor(girl,'舔狗'))
// result in: { value: "颜少连", writable: false, enumerable: true, configurable: false }
hasOwnProperty(prop):查询对象中是否拥有某个属性,有则返回true
girl.hasOwnProperty('舔狗');
// result in : true ,查询到女神舔狗一条
isExtensible(obj):查询对象否可扩展,有则返回true
Object.isExtensible(girl) // true,这时候,可以有更多舔狗进来
// 使得对象变的不可拓展
Object.preventExtensions(girl);
Object.isExtensible(girl); // === false
// seal固定原本属性,原本是怎样就是怎样,返回新数组
const girled = Object.seal(girl);
Object.isExtensible(girled); // === false
// 冻结对象也是不可扩展,返回一个新数组
const girlfrozen = Object.freeze(girl);
Object.isExtensible(girlfrozen); // === false
// 这样就只有我一个人可以舔了
toString():返回一个该对象的字符串化,返回字符串数据,万物皆可toString!!!
这里强调一点,我们平常使用的 双等号 == ,就是默认把两边数据都调用toString,都转化成字符串,再去对比,比较耗性能,所以最好是用三等号 ===
entries():返回了一组可迭代的对象,并增加迭代完成的属性。
keys():返回了一组可迭代的key,并增加迭代完成的属性。
values():返回了一组可迭代value,并增加迭代完成的属性。
关于迭代器:推荐一篇不错文章关于迭代器的介绍及自制迭代器
// 这里只讲一下entries,另外两个差不多
const tgMen = {tg1:'舔狗一号',tg2:'舔狗二号',tg3:'舔狗三号'};
for (item of tgMen) {
}
// result in: tgMen is not iterable ,告诉咱们 对象是不可迭代的。这时候就要用上我们的entries
// Array [Array ["tg1", "舔狗一号"], Array ["tg2", "舔狗二号"], Array ["tg3", "舔狗三号"]]
// Array ["tg1", "舔狗一号"]
// Array ["tg2", "舔狗二号"]
// Array ["tg3", "舔狗三号"]
// 可以看出返回了一组可迭代的数组,数组由对象的[key,value]组成
delete:对象属性内没有删除的方法,要删除某个属性,需要调用对象外的delete
const girl = {
TG: '颜少连'
};
delete girl.TG
console.log(girl)
// result in : {} ,这时候,我就不再是女神舔狗了,兄弟们,不要当舔狗
结语
如果你觉得此文对你有一丁点帮助,点个赞,给我一点儿鼓励哈~舔
其他有趣文章的传送门: