资讯专栏INFORMATION COLUMN

javascript中的数据属性和存储器属性

DevTalking / 671人阅读

摘要:在中,对象的属性分为数据属性和存储器属性两种两种属性的区别我们使用先来直观的感受一下这两者的不同。存储器属性看完了数据属性和存储器属性直观上的差异,我们详细看一看存储器属性这个容易会被忽视说的就是我的属性。

在javascript中,对象的属性分为数据属性和存储器属性两种:

两种属性的区别

我们使用Object.defineProperty()先来直观的感受一下这两者的不同。

使用Object.defineProperty()对数据属性进行设置的方法如下

</>复制代码

  1. var obj = {};
  2. Object.defineProperty(obj, "prop", {
  3. value: 1,
  4. writable: true, //可写性
  5. enumerable: true, //可枚举性
  6. configurable: true //设置该属性是否能被删除,以及enumerable属性是否可以被修改
  7. })

使用Object.defineProperty()对存储器属性的设置方法如下

</>复制代码

  1. var obj = {};
  2. Object.defineProperty(obj, "prop", {
  3. get
  4. set
  5. enumerable: true, //可枚举性
  6. configurable: true //设置该属性是否能被删除,以及enumerable属性是否可以被修改
  7. })

从上面的例子中,我们观察到存储器属性并没有value和writable两个属性,取而代之的是set和get属性。

存储器属性

看完了数据属性和存储器属性直观上的差异,我们详细看一看存储器属性这个容易会被忽视(说的就是我TT)的属性。

存储器属性与数据属性最大的不同就是增加了getter/setter,通过它们可以对属性的值进行操作,可以实现一些实用的功能。

</>复制代码

  1. //example1
  2. function serialnum() {
  3. var n =1;
  4. var prop = null;
  5. Object.defineProperty(this, "n", {
  6. get: function() {
  7. return n;
  8. },
  9. set: function(value) {
  10. if(value > n) n = value;
  11. else throw "请输入一个大于n的值";
  12. }
  13. })
  14. }
  15. var obj = new serialnum();
  16. obj.n = 2;
  17. //2
  18. obj.n = 0;
  19. //Uncaught 请输入一个大于n的值

上面的例子中,使用set函数对n的取值范围进行控制。

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

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

相关文章

  • V8 中的 Fast 属性

    摘要:这些是中可用的最快属性。通常来说我们将线性属性存储中存储的属性称为。因此也支持所谓的属性。整数索引属性的处理和命名属性的复杂性相同。 本文为译文,原文地址:http://v8project.blogspot.com...,作者,@Camillo Bruni ,V8 JavaScript Engine Team Blog 在这篇博客中,我们想解释 V8 如何在内部处理 JavaScrip...

    Andrman 评论0 收藏0
  • JavaScript优化之管理作用域

    摘要:当被创建时,它的作用域链初始化为当前运行函数的属性中的对象,这些值按照他们出现在函数中的顺序,被复制到执行环境的作用域链中。然后这个对象被推入作用域链最前端。 在计算机科学中,数据存储的位置关系到代码执行过程中数据的检索速度,有一个经典的问题即为:通过改变数据的存储位置来获得最佳的读写性能。 Javascript中四种基本的数据存储位置 字面量字面量只代表自身,不存储在特定的位置。...

    fox_soyoung 评论0 收藏0
  • 面向对象简介

    摘要:面向对象概述简单的概述以下面向对象面向对象变成的全称为,简称。面向对象编程可以看作时使用一系列对象相互协作的软件设计。面向对象编程的三个重要特征封装,继承,多态。构造函数的方法内关键字会指向当前对象。冻结对象禁止对对象执行任何修改操作。 面向对象 概述 简单的概述以下面向对象 面向对象变成的全称为object oriented programming, 简称oop。 面向对象编程时用抽...

    _ivan 评论0 收藏0
  • 如何使用HTML5自定义数据属性

    摘要:在之前,你必须使用以下代码来访问数据属性从版本开始,使用驼峰命名法版本的数据属性。 在本文中,我将向你介绍如何使用HTML5自定义数据属性。我还将向你介绍一些开发人员在工作中经常使用的优秀实例。 为什么需要自定义数据属性? 很多时候我们需要存储一些与不同DOM元素相关联的信息。这些信息对于读者来说可能是不需要的,但是可以轻松的访问这些信息将会给我们开发者的工作带来极大的便利。 例如...

    UsherChen 评论0 收藏0

发表评论

0条评论

DevTalking

|高级讲师

TA的文章

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