在现在比较新的框架中, 比如 reactjs, vuejs中用得很多的一个属性便是

Object.defineOProperty

此属性的文档在网上一搜, 其中的几个属性,

包括 存取描述符(有set和get的) 和 数据描述符(直接有 value 的就是数据描述符)

有 set get 有 value writable enumerable configurable

虽然有 set 和 get, 但是定义的时候还是要用到
enumerable 和 configurable set 和 get 类似 writable 和 value

其中的 configurable 和 writable 比较让人混淆。

configurable 给的说明是 如果为 false , 那么不可以修改, 不可以删除.
但 writable 给的说明是如果设置为 false, 不可以采用 数据运算符 进行赋值
所以这里就有一部分交叉. 如果 writable 为 true 的时候, configurable 为 false , 
那结果会怎么样呢?
 
写一下具体的例子, 比如
var o = {}; // 创建一个新对象
Object.defineProperty(o, "a", {
value : "original",
writable : false, // 这个地方为 false
enumerable : true,
configurable : true
}); o.a = "new"; //此时候, 是更改不了 a 的. var o = {}; // 创建一个新对象
Object.defineProperty(o, "a", {
value : "original",
writable : true,
enumerable : true,
configurable : false //这里为false
});
o.a = "new";//此时候, a 进行了改变
//但是如果
delete o.a //将返回 false, 并且 a 没有被删除
//结论

此刻我们看来, 对于我们的影响, 目前来看, 主要是
configurable 控制是否可以删除 writable 控制是否可以修改(赋值)
当然 enumerable 控制是否可以枚举.

例如一下的例子,解释了一下 enumerable

var o = {}; // 创建一个新对象
Object.defineProperty(o, "a", {
value : 37,
writable : true,
enumerable : false,//此处设置为false, 在枚举的时候会忽略
configurable : true
}); for(var i in o){
console.log(o[i]); // undefined, 是没有具体的值的.
}

Object.defineProperty 中的 writable 和 configurable 和 enumerable 的理解的更多相关文章

  1. Object.defineProperty 中 get set 用法

    就是两个函数,只要搞清楚get.set的执行时机就可以了.执行时机如下代码: <!DOCTYPE html> <html lang="en"> <he ...

  2. js中的Object.defineProperty()和defineProperties()详解

    ECMAS-262第5版在定义只有内部采用的特性时,提供了描述了属性特征的几种属性.ECMAScript对象中目前存在的属性描述符主要有两种,数据描述符(数据属性)和存取描述符(访问器属性),数据描述 ...

  3. Js中的Object.defineProperty

    通过Object.defineProperty为对象设置属性,并同时规定属性的属性(可见性,可配置性,可枚举性等) 备注:如果通过var obj = {} obj.age = 18这种方式设置的属性, ...

  4. javascript之Object.defineProperty的奥妙

    直切主题 今天遇到一个这样的功能: 写一个函数,该函数传递两个参数,第一个参数为返回对象的总数据量,第二个参数为初始化对象的数据.如: var o = obj (4, {name: 'xu', age ...

  5. Object.defineProperty

    属性类型ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMA-262定义这些特性是为了实现JavaScript引擎用的,因此在Ja ...

  6. Object.defineProperty()方法的用法详解

    Object.defineProperty()函数是给对象设置属性的. Object.defineProperty(object, propertyname, descriptor); 一共有三个参数 ...

  7. 理解Object.defineProperty的作用

    对象是由多个名/值对组成的无序的集合.对象中每个属性对应任意类型的值.定义对象可以使用构造函数或字面量的形式: var obj = new Object; //obj = {} obj.name = ...

  8. [VUE]object.defineProperty的基本使用

    1.object.defineProperty 给一个对象定义一个新的属性或者在修改一个对象现有的属性,并返回这个对象 语法: Object.defineProperty(参数1,参数2,参数3) 参 ...

  9. 深入了解Object.defineProperty

    原来写文章都是一次写两三个小时写完,偶尔看到一个人的博客了解到还有草稿箱这个功能,所以以后写文章的时候就舒服多了哈哈,可以存起来再发,不需要一口气写完了 最近一直在看JavaScript高级程序设计, ...

随机推荐

  1. jQuery源码分析(九) 异步队列模块 Deferred 详解

    deferred对象就是jQuery的回调函数解决方案,它解决了如何处理耗时操作的问题,比如一些Ajax操作,动画操作等.(P.s:紧跟上一节:https://www.cnblogs.com/grea ...

  2. spring的一些概念及优点

    Spring是一个轻量级的DI和AOP容器框架.说它轻量级有一大部分原因是相对于EJB的(虽然本人从来没有接触过EJB的应用),但重要的是Spring是非侵入式的,基于Spring开发应用一般不依赖于 ...

  3. 2019-11-25-win10-uwp-通过命令行脚本开启旁加载

    原文:2019-11-25-win10-uwp-通过命令行脚本开启旁加载 title author date CreateTime categories win10 uwp 通过命令行脚本开启旁加载 ...

  4. 4、Ext.NET 1.7 官方示例笔记 - 树

    <%@ Page Language="C#" %> <%@ Import Namespace="System.Collections.Generic&q ...

  5. 2019年ASP.NET Core学习路线

    - [先决条件] + C# + Entity Framework + ASP.NET Core + SQL 基础知识 - [通用开发技能] + 学习 GIT, 在 GitHub 中创建开源项目 + 掌 ...

  6. Python 摘要算法hashlib 与hmac

    参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017686752491744 摘要算法(也成为哈希算法)是用来防篡改的,因为我们的即使 ...

  7. linux安装和使用zookeeper

    一.安装条件 想要安装zookeeper,必须先在linux中安装好jdk.安装步骤见: https://www.cnblogs.com/expiator/p/9987351.html 二.下载并解压 ...

  8. 前端开发JS——引用类型

    10.流程控制语句      注:var obj = {}:这里的obj转换boolean语句为true   if语句和java是一样的,判断条件也是根据上篇博客提到的假性值 // 弹出一个带输入框的 ...

  9. python 检查站点是否可以访问

    最近碰到系统有时候会访问不了,想写一个程序来检测站点是不是可以访问的功能,正好在学python,于是写了一个方法来练练手,直接上代码. import urllib.request import smt ...

  10. ANDROID培训准备资料之BroadcastReceiver

    BroacastReceiver的启动方式? (1)     创建需要启动的BroadcastReceiver的Intent. (2)     调用context的sendBroadcast()或者s ...