Js高阶:Object


一、对象的声明

  1. 字面量声明: var obj = {name: “aaa”}
  2. 构造函数声明: var obj = new Object();

二、定义属性

  1. obj.name = “aaa”
  2. obj[name] = ''aaaa"

三、对象的遍历和修改

3.1 遍历

for…in… 可以检测到原型上的数据

3.2 修改

3.2.1 删除

deleta obj[key];
冻结对象,防止对象被修改 Object.freeze(obj);

3.2.2 查找

in 可以检测到原型上的数据 key in obj 返回为true
obj.hasOwnProperty(“key”); 检测不到原型上的数据

四、属性分类

属性的类型分两种: 一种是数据属性, 一个是访问器属性。数据属性用来储存一个值, 访问器属性不包含值, 而是定义了一个get和set函数。

var obj = {
	_myname: 'clw',
	get name(){
		console.log('get方法被调用了');
		return this._myname + '1111';
	},
	set name(value){ //set里的value是必填的
		console.log('set方法被调用了');
		this._myname = value;
    }
};
console.log(obj.name);

五、属性特征

5.1 通用特征

  1. enumerable 是否可以遍历
  2. writable 是否可以写
  3. configurable 该属性时候可以配置
    默认值都为false

5.2 特征的修改

修改单个属性特征
Object.defineProperty(obj, "name", {
            // value 和访问器属性是不可共存的
            // value: "huohua",
            set: function (val) {
                console.log("set");
                this._name = val
            },
            get: function () {
                console.log("get");
                return this._name
            },

            // writable和访问器属性不可共存
            // writable: false, // 是否可写

            // 是否可枚举可以和访问器属性共存
            enumerable: true, //是否可枚举
            
            configurable: true // 是否可配置 (不可配置时,则不可删除)
        })
        
同时修改多个属性特征
Object.defineProperties(obj, {
	"name": {
		value: "huohua",
		writable: true
	},
	"classNumer": {
		value: 27,
		enumerable: true
	}
})

5.3 获取属性特征

  1. 获取单个属性特征
    Object.getOwnPropertyDescriptor(obj, “age”)
  2. 获取所有属性特征
    Object.getOwnPropertyDescriptors(obj)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值