推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

js中Object对象有哪些?js中object对象使用方法的总结

   2023-07-03 网络整理佚名1910
核心提示:js中对象使用方法的总结,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。.()方法为对象定义新属性或修改现有属性,并返回该对象.()方法为对象定义一个或多个新属性或修改现有属性,并返回该对象当该属性的为true时,该属性才能够出现在对象的枚举属性中。对象的属性除了可以直接定义以外,还可以使用存取器进行定义。禁止扩展:禁止为对象扩展新的属性或方法

这篇文章给大家带来的是关于js中的对象? 关于js中如何使用对象的总结有一定的参考价值,有需要的朋友可以参考一下,希望对你有帮助。

属性描述符

提供内部数据结构,用于描述对象的值并控制其行为,例如属性是否可写、可配置、可修改和可枚举。 这种内部数据结构称为“属性描述符”。

每个属性都有自己对应的属性描述符,保存了属性的元信息。

{
    value:'前端',
    writable:false,
    enumerable:true,
    configurable:false,
    get:undefined,
    set:undefined
}

登录复制

目前对象中存在两种主要形式的属性描述符:数据描述符和访问描述符

数据描述符

数据描述符是具有值的属性,该值可能是可写的,也可能是不可写的。 数据描述符具有以下可选键值:

访问描述符

访问描述符是由函数对描述的属性。 访问描述符具有以下可选键:

获取属性描述符

.ptor() 方法返回与指定对象上自己的属性相对应的属性描述符。

Object.getOwnPropertyDescriptor(obj,prop)

登录复制

var obj={}
obj.attr='前端';
console.log(Object.getOwnPropertyDescriptor(obj,'attr'));

登录复制

设置属性描述符

1..() 方法为对象定义新属性或修改现有属性并返回该对象

Object.defineProperty(obj,prop,descriptor);

登录复制

2..()方法为一个对象定义一个或多个新属性或修改现有属性,并返回该对象

Object.defineProperties(obj,props)

登录复制

属性描述符的可选键

1.value:表示目标属性对应的值。 可以是任何有效值(数字、对象、函数等)。默认为

var obj={};
obj.name='张三';
var attr=Object.getOwnPropertyDescriptor(obj,'name');
console.log(attr.value);
Object.defineProperty(obj,'name',{value:'李四'});
console.log(obj.name);

登录复制

2.:value,表示目标属性的值是否可以修改。 当该属性为 true 时,可以通过赋值运算符更改该值。 默认为 false

var obj={};
Object.defineProperty(obj,'attr',{
       value:'前端',
       writable:false
});
console.log(obj.attr);
obj.attr=100;
console.log(obj.attr);

登录复制

3.:value,表示目标属性的描述符是否可以修改。 当属性为true时,可以更改属性描述符,也可以从相应的对象中删除该属性。 默认为 false

var obj=Object.definePropety({},'attr',{
    value:'大前端',
    configurable:false
});
Object.definePropety(obj,'attr',{value:100});
Object.definePropety(obj,'attr',{writable:true});
Object.definePropety(obj,'attr',{enumerable:true});
Object.definePropety(obj,'attr',{configurable:true});

登录复制

4.:值,表示目标属性是否可以遍历。 当该属性为true时,该属性可以出现在对象的枚举属性中。 默认为 false

如果对象的属性值为 false,则以下三个操作无法获取该属性:

var obj={};
Object.defineProperty(obj,'attr',{value:'前端',enumerable:false});
for(var key in obj){console.log(key);}
console.log(Object.keys(obj));
console.log(JSON.stringify(obj));

登录复制

属性描述符的访问器

除了直接定义之外,对象的属性还可以使用访问器来定义。 其中,是存储功能,使用属性描述符中的集合; 是值函数,使用属性描述符中的get

var obj=Object.defineProperty({},'attr',{
    get:function(){
        return '前端';
    },
    set:function(){
        console.log('setter:'+value);
    }
});
console.log(obj.attr);
obj.attr=100;

登录复制

除了上面的访问器写法之外,还提供了以下写法:

var obj={
    get attr(){
        return '前端';
    },
    set attr(value){
        console.log('setter:'+value);
    }
}
console.log(obj.attr);
obj.attr=100;

登录复制

防篡改

默认情况下,定义的对象可以随时随地修改该对象的属性或方法,无论有意义还是无意义。

而这些篡改可能会影响对象的内置属性或方法,从而导致对象的正常功能可能无法使用。

1.禁止扩展:禁止对象扩展新的属性或方法

var obj={};
Object.preventExtensions(obj);
obj.attr='前端';
console.log(Object.isExtensible(obj));
console.log(obj.attr);

登录复制

2.密封对象:禁止扩展新的属性或方法,禁止配置现有属性或方法的描述符,只允许读写属性的值

var sealed={};
Object.seal(sealed);
Object.isSealed(sealed);
Object.isExtensible(sealed);

登录复制

3.冻结对象:禁止对对象进行任何修改操作

var frozen={1:81};
Object.isFrozen(frozen);
Object.freeze(frozen);
Object.isFrozen(frozen);
Object.isSealed(frozen);
Object.isExtensible(frozen);

登录复制

 
标签: js
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON