资讯专栏INFORMATION COLUMN

js中对象的属性的分类及权限

gotham / 3325人阅读

摘要:属性的权限设置值可写入可枚举可配置在设置属性权限为时是最后一次修改属性值的时候。再扩展对象时不会报错但是没有执行结果。封印该对象,且不可逆。冻结设置该对象的所有属性不可添加不可修改不可删除。得到对象是否冻结。

js中对象的属性的分类及权限 对象的属性分类

从属性性质的角度分类可分为“数据属性”和“存取器属性”

数据属性

定义

var o = {
    key0: value0
}

使用

o.key0 // 得到value0
o.key0 = newValue0 // 设置新值
存取器属性

定义

var o = {
    temp: "temp",
    // 只能对方法设置存取器
    get key0 () {
        return "value0"
    },
    set key0 (newValue) {
        this.temp = "newTemp"
    }
}

使用

o.key0 // 得到value0
o.key0 = newValue0 // 设置新值

发现这两个属性在定义时有区别,在使用时没有区别。

属性的权限

设置

Object.defineProperty(o, "key0", {
    value: "value0", // 值
    writable: true, // 可写入
    enumerable: true, // 可枚举
    configurable: true // 可配置
})

在设置属性权限为false时是最后一次修改属性值的时候。设置属性可写权限为false后就不能再修改了。

操作对象的权限 扩展

设置不可扩展后就不能再扩展该对象的属性了。

Object.isExtensible(o) // 得到对象o是否可扩展
Object.preventExtensions(o) // 设置对象o为不可扩展对象,且不可逆。再扩展o对象时不会报错但是没有执行结果。
封印

设置该对象的所有属性可修改不可删除不可添加。

Object.isSealed(o) // 得到o对象是否封印。
Object.seal(o) // 封印该对象,且不可逆。
冻结

设置该对象的所有属性不可添加不可修改不可删除。

Object.isFrozen(o) // 得到o对象是否冻结。
Object.freeze(o) // 设置o对象冻结,且不可逆。
小结
扩展 封印 冻结 是否可逆
添加 X X X X
修改 Y Y X X
删除 Y X X X

2018/06/15 by stone

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95485.html

相关文章

  • Odoo权限管理

    摘要:在中,使用用户组来管理权限,一个特殊的用户组是员工员工组,所有的用户都属于这个组,这个组里包含一些基本的权限。字段级别设置表中的字段的访问权限。 在Odoo中,使用用户组(res.groups)来管理权限,一个特殊的用户组是 员工/员工(base.group_user) 组,所有的用户都属于这个组,这个组里包含一些基本的权限。四种权限级别(粒度越来越细):1.菜单/对象级别设置哪些人可...

    mikasa 评论0 收藏0
  • 「Odoo 基础教程系列」第七篇——从 Todo 应用开始(6)

    摘要:今天这个系列教程即将迎来它的最后一篇内容了,我们将要来学习中权限相关的内容。在的权限管理体系中,同样也有用户组这一概念的存在,和其他框架如可以说大同小异。通常和权限相关的内容,我们都会在模块的目录下进行定义,记录集规则的定义自然也不例外。 在今年的情人节(2018.02.14)那天,我写了一篇博客说即将要开一个坑,也就是大家在看的这个系列的教程。今天这个系列教程即将迎来它的最后一篇内容...

    zeyu 评论0 收藏0
  • (应用)企业后台系统敏捷开发-dva

    摘要:传统与对比开发时,我们需要,等文件,并且需要自行分类,不太清晰。因为的数据流是单向的,用户行为视图变化视图更新,组件可以在钩子中决定是否允许当前组件内的数据流动,函数式组件只能被动接收数据流动。这是第三方登陆,如果是内部登陆使用跳转。 什么是dva dva 是一个基于 redux 和 redux-saga 的数据流方案. 为什么使用dva 因为它简化了react引入redux的过程。 ...

    joywek 评论0 收藏0
  • (应用)企业后台系统敏捷开发-dva

    摘要:传统与对比开发时,我们需要,等文件,并且需要自行分类,不太清晰。因为的数据流是单向的,用户行为视图变化视图更新,组件可以在钩子中决定是否允许当前组件内的数据流动,函数式组件只能被动接收数据流动。这是第三方登陆,如果是内部登陆使用跳转。 什么是dva dva 是一个基于 redux 和 redux-saga 的数据流方案. 为什么使用dva 因为它简化了react引入redux的过程。 ...

    notebin 评论0 收藏0
  • 《Node.js从入门到上线》入门篇 (持续更新

    摘要:最近利用空闲时间写了一个从入门到上线的的实战教程从入门到上线目前还在更新中,入门篇已基本成型。本项目使用语法,采用搭建了一个博客系统,实现了文章管理用户登录注册权限控制分类管理等功能。实现线上部署左手代码右手砖抛砖引玉 最近利用空闲时间写了一个从入门到上线的的node实战教程《Node.js从入门到上线》A blog build with Koa2. 目前还在更新中,入门篇已基本成型。...

    CocoaChina 评论0 收藏0

发表评论

0条评论

gotham

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<