Object的常用方法
一.常用Object方法:
Object.keys()
遍历可枚举的属性,只包含对象本身可枚举属性,不包含原型链可枚举属性
let obj ={ a:1, b:2, c:3, } Object.keys(obj); // [ 'a', 'b', 'c' ]
let str = "saasd字符串"
Object.keys(str) // ["0", "1", "2", "3", "4", "5", "6", "7"]
let arr = [1,2,3,4,5,6]
Object.keys(arr) // ["0", "1", "2", "3", "4", "5"]
Object.values()
遍历可枚举的属性值,只包含对象本身可枚举属性值,不包含原型链可枚举属性值
let obj ={ a:1, b:2, c:3, } Object.values(obj); // [ 1, 2, 3 ]
Object.entries()
分割对象
const obj = { foo: 'bar', baz: 42 }; console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ] // array like object const obj = { 0: 'a', 1: 'b', 2: 'c' }; console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ] // string Object.entries('abc') // [['0', 'a'], ['1', 'b'], ['2', 'c']] Object.entries(100) // []
Object.assign(target,source,source1)
用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。拷贝的属性是有限制的,只拷贝源对象的自身属性(不拷贝继承属性),也不拷贝不可枚举的属性(enumerable: false)
const target = { a: 1, b: 1 }; const source1 = { b: 2, c: 2 }; const source2 = { c: 3 }; Object.assign(target, source1, source2); target // {a:1, b:2, c:3} 特殊情况: let obj = {a: 1}; Object.assign(obj, undefined) === obj // true Object.assign(obj, null) === obj // true Object.assign([1, 2, 3], [4, 5]) // [4, 5, 3] Object.assign方法实行的是浅拷贝,而不是深拷贝。 const obj1 = {a: {b: 1}}; const obj2 = Object.assign({}, obj1); obj1.a.b = 2; console.log(obj2.a.b) //2 obj2.a.b = 3 console.log(obj1.a.b) //3
Object.is()
它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致
Object.is('foo', 'foo') // true Object.is({}, {}) // false 不同于 === 之处 +0 === -0 //true NaN === NaN // false Object.is(+0, -0) // false Object.is(NaN, NaN) // true
Object.hasOwnProperty()
hasOwnProperty表示是否有自己的属性。这个方法会查找一个对象是否有某个属性,但是不会去查找它的原型链(继承属性)。
var obj = { a: 1, fn: function(){ }, c:{ d: 5 } }; console.log(obj.hasOwnProperty('a')); // true console.log(obj.hasOwnProperty('fn')); // true console.log(obj.hasOwnProperty('c')); // true console.log(obj.c.hasOwnProperty('d')); // true console.log(obj.hasOwnProperty('d')); // false, obj对象没有d属性 var str = new String(); // split方法是String这个对象的方法,str对象本身是没有这个split这个属性的 console.log(str.hasOwnProperty('split')); // false console.log(String.prototype.hasOwnProperty('split')); // true
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗