对象相关知识总结

目录

一、对象认识

二、对象的增、删、改、查

三、对象遍历(推荐使用for...in)

四、对象类型的强制转换

五、检测对象属性是否自有或继承

六、Object原型中常用方法

        hasOwnProperty(propertyName)

        propertyIsEnumerable(propertyName)

        valueOf()

        toLocaleString()

        toString()

        isPrototypeOf(object)

七、对象属性

Object.defineProperty(属性所在的对象,属性的名字,一个描述符对象)


一、对象认识

对象是一个无序的集合

对象包括属性和方法

二、对象的增、删、改、查

增(改)

对象名.属性名 = 增加的值(修改的值)

delete 对象名.属性名 = 值

查(两种方式)

对象名.属性 

对象名['属性']

三、对象遍历(推荐使用for...in)

const obj = {
    name:'华',
    age:18,
    gender:'女'
}
for(let key in obj){
        console.log(key,typeof(key));//name string, age string, gender string       
    }
for(let key in obj){
    console.log(obj[key]);//华 18 女
}

四、对象类型的强制转换

1、转为Boolean

        使用包装器函数Boolean()

2.将对象转为String类型

        1.String(obj);

        2.{}+""

        3.{}.toString()

        默认都调动toString() [object,Object]

        如果重写了toString() 则调用重写toString()

    3.将对象转为number类型

        1.Number({})

        2.+{}

        3.parseInt()

        4.parseFloat()

        1.如果重写了toString() 则都会调用toString()

        2.如果重写了valueOf() Number和+ 会调用valueOf

        3.如果两者都重写 Number和+会调用valueOf parseInt parseFloat调用toString()

 使用包装器函数oolean()、String()、Number()

let obj = {
	name:'小华',
	age:18,
	toString(){
		return this.name+this.age
	}
}
console.log(Boolean(obj));//true
console.log(String(obj),typeof (String(obj)));//小华18 string
console.log(Number(obj),typeof (Number(obj)));//NaN number

五、检测对象属性是否自有或继承

in   检测属性是否自有属性或者继承属性

hasOwnProperty()    检测给定的属性是否是对象的自有属性,对于继承属性将返回false

propertyIsEnumerable()   除了是自身属性外,还要求是可枚举属性,即我们创建的属性

const obj = {
	name:'小华',
	age:18
}
console.log('name' in obj);//true
console.log('age' in obj);//true
console.log('toString' in obj);//true  toString是继承属性,继承自Object

console.log(obj.hasOwnProperty('name'));//true
console.log(obj.hasOwnProperty('toString'));//false  

console.log(obj.propertyIsEnumerable('name'));//true
console.log(obj.propertyIsEnumerable('age'));//true
console.log(obj.propertyIsEnumerable('toString'));//false

六、Object原型中常用方法

        hasOwnProperty(propertyName)

                检查给定的属性名是否是对象的自有属性

        propertyIsEnumerable(propertyName)

                检查给定的属性在当前对象实例中是否存在

        valueOf()

                返回对象的字符串,数值,布尔值的表示

        toLocaleString()

                用来返回格式化对象后字符串

                eg:        

let date = new Date()
console.log(date.toLocaleDateString('zh'));//2023/6/30

console.log(date.toLocaleDateString('en'));//6/30/2023
        toString()

                返回对象的字符串表示

        isPrototypeOf(object)

                检查传入的对象的原型

七、对象属性

ECMAScript中有两种属性:数据属性、访问器属性。这两种属性用于设置属性的高级属性,例如该属性是否可以配置,是否可以读写,是否可以遍历,并且可以通过setter,getter来监听数据的改变。

数据属性特性

[[Configurable]]        是否可配置

表示是否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性(属性直接定义在对象中,默认为true)。 当为false时,不能重新定义不能使用delete删除

[[Enumerable]]        是否可枚举

表示能否通过for-in循环返回属性。(属性直接定义在对象中,默认为true)

[[Writable]]        是否可写

表示能否修改属性的值。(属性直接定义在对象中,默认为true)

包含这个属性的数据值 name:jacky

[[Value]]        是否包含这个属性的数据值

Object.defineProperty(属性所在的对象,属性的名字,一个描述符对象)

修改属性默认特性

let dog = {
	name:'幺幺',
	age:3,
}
Object.defineProperty(dog,'name',{
	configurable:true,
	writable:true,
	value:'汪汪'

});
console.log(dog)//{ name: '汪汪', age: 3 }
console.log(Object.getOwnPropertyDescriptors(dog));
//{
// name: { value: '汪汪', writable: true, enumerable: true, configurable: true },
//},                                                                              
// age: { value: 3, writable: true, enumerable: true, configurable: true }     
//}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值