浅析ECMAScript中对象的两种属性

ecmascript对象有两种属性,分别为数据属性和访问器属性,接下来我们就分别对着两种属性进行分析。

1、数据属性
数据属性包含一个数据值的位置。这个位置可以读取和写入值。数据属性有4个描述其行为的特性。
[ [ Configurable ] ]    表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问属性。默认为true
[ [ Enumerable] ]    表示能否通过for-in循环返回属性。默认为true
[ [ Writable ] ]        表示能否修改属性的值。默认为true
[ [ Value ] ]        包含这个属性的属性值。读取属性的时候,从这个位置读取,写入属性的时候,把新值保存在这个位置。默认为undefined
eg:

var p = {};Object.defineProperty(p, "name", {    writable: false,    value: 'nihao' })

登录后复制

2、访问器属性
访问器属性不包含数据值,他们包含一对儿getter和setter函数(不过,这两个函数都不是必须的)在读取访问器属性的时候会调用getter函数,这个函数负责返回有效的值。在写入访问器属性是,会调用setter函数并传入新值,这个函数负责决定如何处理数据
[ [ Configurable ] ]    表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问属性。默认为true
[ [ Enumerable] ]    表示能否通过for-in循环返回属性。默认为true
[ [ Get ] ]            在读取属性时调用的函数,默认为undefined
[ [ Set ] ]            在写入属性时调用的函数,默认为undefined
eg:

var p = {get: 0};Object.defineProperty(p, "name", {    get: function (){        console.log('get');        return this.get;    },    set: function (newVal) {        console.log('set');        this.get = newVal;    }})

登录后复制

3、读取属性的特性
Object.getOwnPropertyDescriptor(属性所在的对象, 属性名称);
返回值是一个对象,访问属性configurable 、enumerable、get、set四个属性,
如果是数值属性,返回的对象属性有configurable 、enumerable、writable、value四个属性
备注:
Object.defineProperties()函数可以定义多个属性
eg:

var p = {get: 0};Object.defineProperties(p, {"name", {    get: function (){        console.log('get');        return this.get;    },    set: function (newVal) {        console.log('set');        this.get = newVal;    }}, "age": {       writable: true,       value: 11   }})

登录后复制

相关推荐:

ECMAScript 5中的属性描述符详解_基础知识

以上就是浅析ECMAScript中对象的两种属性的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2745900.html

(0)
上一篇 2025年3月8日 03:50:48
下一篇 2025年2月28日 02:34:44

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 浅析Vue的异步组件函数

    这篇文章给大家带来的内容是关于浅析vue的异步组件函数,有着相应的代码实例,有需要的朋友可以参考一下。 export default new Router({ routes: [ { path: ‘/live’, name: ‘live’,…

    编程技术 2025年3月8日
    200
  • 一篇文章教你看懂关于JavaScript中this的软绑定

    首先,什么是软绑定? 所谓软绑定,是和硬绑定相对应的一个词,在详细解释软绑定之前,我们先来看看硬绑定。在javascript中,this的绑定是动态的,在函数被调用的时候绑定,它指向什么完全取决于函数在哪里调用,情况比较复杂,光是绑定规则就…

    编程技术 2025年3月8日
    200
  • 遍历器Iterator访问数据集合的统一接口的方法

    这篇文章给大家介绍的内容是关于遍历器iterator访问数据集合的统一接口的方法,有着一定的参考价值,有需要的朋友可以参考一下。 导语 遍历器Iterator是ES6为访问数据集合提供的统一接口。任何内部部署了遍历器接口的数据集合,对于用户…

    编程技术 2025年3月8日
    200
  • React的使用:react框架的五大特点

    这篇文章给大家介绍的内容是关于react的使用:react框架的五大特点,有着一定的参考价值,有需要的朋友可以参考一下。 01. React 出现的时代背景 世界上的事情都有因才有果,一个框架的出现也必然离不开特定的时代背景。而对于 Rea…

    编程技术 2025年3月8日
    200
  • react的使用: React如何渲染UI

    这篇文章给大家介绍的内容是关于react的使用: react如何渲染ui,有着一定的参考价值,有需要的朋友可以参考一下。 01. React 渲染界面的方式 在 React 等大型前端框架出现之前,我们渲染 UI 元素的方式是使用字符串模板…

    编程技术 2025年3月8日
    200
  • React的使用:React组件内部的状态管理

    这篇文章给大家介绍的内容是关于React的使用:React组件内部的状态管理,有着一定的参考价值,有需要的朋友可以参考一下。 在本文中,我们将把目光聚焦于 React 组件内部的状态管理,去认识或重新思考以下三个核心概念: props 和 …

    编程技术 2025年3月8日
    200
  • vue-cli的单元测试的示例解析

    这篇文章给大家介绍的内容是关于vue-cli的单元测试的示例解析,有着一定的参考价值,有需要的朋友可以参考一下。 vue-cli的单元测试 最近项目开发临近结尾,反思之前做的不足的地方,想着应该引入测试类的做法,于是乎开始学习前端测试之类的…

    编程技术 2025年3月8日
    200
  • JavaScript中Object.defineProperty()方法的解析

    这篇文章给大家介绍的内容是关于javascript中object.defineproperty()方法的解析,有着一定的参考价值,有需要的朋友可以参考一下。 =与Object.defineProperty 为JavaScript对象新增或者…

    编程技术 2025年3月8日
    200
  • js如何实现将上传图片并且压缩的方法

    这篇文章给大家介绍的内容是关于js上传图片压缩,有着一定的参考价值,有需要的朋友可以参考一下。 js实现图片压缩后上传 用到的技术: canvas相关api html5的一些api 兼容性: 点击下载“嗨格式压缩大师”; h5没发现问题,p…

    编程技术 2025年3月8日
    200
  • js实现重建二叉树的算法解析

    这篇文章给大家介绍的内容是关于js实现重建二叉树的算法解析,有着一定的参考价值,有需要的朋友可以参考一下。 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论