Object.keys()
- 该数组包含给定对象的自身可枚举属性名
- 自身属性
- 可枚举属性
- 自身属性:直接定义在对象上的属性就是自身属性,与继承属性相对应。
- 可枚举属性:字面量法创建的对象属性都可以枚举。
语法
Object.keys(obj)
key是什么
const obj{
key:value
}
- key:属性名
- value:属性值
示例
//Object.keys()
const obj = {
x:1,
y:2
}
//在obj的原型对象身上添加⼀个z:3
obj.__proto__.z = 3 //⾮标准⽅法
Object.getPrototypeOf(obj).w = 4//可以拿到obj的原型对象
console.log(obj.__proto__);
//可枚举属性:字⾯量法创建的对象属性都是可枚举的。
//⾃身属性:直接定义在对象上的属性就是⾃身属性。与继承属性对应
Object.values()
返回值:返回一个数组
该数组包含给定对象的自身可枚举属性值
语法:
Object.values(对象名)
Object.entries
返回值:返回一个数组
该数组包含给对象的自身可枚举属性名和属性值
语法:
Object.entries(对象名)
示例
Object.keys
const obj = {
x : 1,
y : 2,
}
//在obj身上一个z:3
obj.o = 4
obj.__proto__.z=3
Object.getPrototypeOf(obj).w = 4
console.log(obj.__proto__)
const Arr = Object.entries(obj)
console.log(Arr)//Array(3) [ (2) […], (2) […], (2) […] ]0: Array [ "x", 1 ]1: Array [ "y", 2 ]2: Array [ "o", 4 ]
//可枚举属性:字面量法创建的对象属性都是可枚举的
//自身属性:直接定义在对象上的属性就是自身属性。与继承属性相对应。
Object.hasOwnProperty
定义:检测一个属性是否自身属性
返回值:布尔值
- true:表示该属性时对象的自身属性
- false:表示该属性不是对象的自身属性
语法:
obj.hasOwnProperty(prop)
对象.hasOwnProperty(属性名)
示例:如何检测一个属性是否是自身属性
const obj = {
x : 1,
y : 2,
}
//在obj身上一个z:3
obj.o = 4
obj.__proto__.z=3
Object.getPrototypeOf(obj).w = 4
const Arr = obj.hasOwnProperty("mm")//加引号 false
console.log(Arr)
Object.prototype.propertylsEnumerable()
定义:该方法用于检测自身属性是否可枚举
返回值:布尔值
语法:
obj.propertyIsEnumerble(prop)
示例:
对象的拷贝:把obj2的属性复制到obj1里面
const obj1 = (x:1)
const obj2 = (y:2,z:3)
Object.assign(obj1,obj2)
console.log(obj1)//输出 {x:1,y:2,z:3Object.assign(obj1,obj2)}
Object.assign()
定义:将所有可枚举属性从一个或多个源对象复制到目标对象
返回值:修改后的对象
语法:
Object.assign(target,...sources)
- target:目标对象
- sources:源对象
新数据类型
BigInt
含义:BigInt表示任意大的整数
语法:
//字面法定义bigint
const bi1 = 1000000000n
//内置函数法
const bi2 = BigInt(100000)//1000000n
const bi2 = BigInt('100000')//1000000n
用法:
①可以做算法
②不可以使用Math方法
③不能和number运算
④可以和number做比较
示例:
// BigInt表示任意大的整数
const b1 = 10n;
const b2 = BigInt(20);
console.log(b1); //10n
console.log(b2); //20n
console.log(b1 + b2); //30n①可以做算法
console.log(typeof b1); //bigint
// console.log(Math.abs(b1)); //②不可以使用Math方法
// console.log(b1 + 20); //③不能和number运算
console.log(20n===20);
console.log(20n==20);//④可以和number做比较
Symbol
- Symbol是⼀种基本数据类型
- Symbol是原始值
含义:一个具有唯一性的标识符
// 1.Number(任意)=》数值 2.new Number(任意)=》对象
const n1 = Number(100);
console.log(n1);
const n2 = Number();
console.log(n2);
const n3 = Number(Infinity);
console.log(n3);
// 1.String()(任意) =》原始值 2.new String(任意)=》对象
const str1 = String("hello");
const str2 = String("hello");
console.log(str1 === str2); //原始值做值的比较,true。
// Symbol(字符串)返回一个具有唯一性的标识符
const sym1 = Symbol("hello");
const sym2 = Symbol("hello");
console.log(sym1 === sym2);//false
const sym3 = new Symbol()//报错