对象语法增强

已经有了个对象的新增语法 还需要一个api来做呢?、

因为有的时候,你需要在旧的对象上添加get、set。

读的时候就走get 写的时候就走set

假设很早之前在项目里写了一个old对象,它的属性都是写好的,现在想给oldObject加get、set。没有办法再去重新定义它

这个api是给已经定好的对象,来不及再去重新定义的对象修改属性,

这样就可以设置oldObject的值为1. 但是set方法里面什么也没做。所以输出oldObject.x的值为undefined

这个api还有其他的功能,这些功能都是js的坑造成的
undefined是不是关键字呢?

如果一个东西是关键字,就没有办法声明同样的变量,function是个关键字,所以你没有办法声明一个关键字是function

同样的this也是一个关键字

可以声明变量undefined。所以undefined不是关键字。

null也事关键字不可以声明。

undefined是只读的变量,所以上面把undefined设置为1 没有设置成功。

常量a,设置a的值就会报错。

由此我们可以推断。undefined不是一个常量,因为我们可以给它赋值
如果undefined是变量的话 给它赋值,值却不变。所以它是不可改变值的变量。

所有的全局变量都是window上的属性而已。所以我们把undefined叫做window的只读属性。

这样就可以确定undefined是window的一个属性。xxxx不是。


是只读的,无法改变。

使用Object.defineProperty

name是一个函数,所以这里显示的是三个点,name2确实是一个属性。这个只读是通过函数来控制的没有set 

o不是真正意义上的有name这个属性,去取它的name的时候,还是看get name

给name2定义一个初始值,用get做成只读的方式。

查看o对象,只看到name2,name是一个函数,并没有name这个可以

name2确确实实的是存在的属性,只不过不能赋值。


configurable

定义age属性不可写

engine设置为不可写

把属性又改成可写的

让属性的可读属性不可修改。configurable是否可再次配置设置为false。


想再改成可写的。就会报错。configurable设置为false后,就不能再去做任何的修改了。

已经关闭了就不能再去修改了。

unumerable


打印o的三个key

toString也是o的key

有些属性是可以被遍历到的,有些属性不可以被遍历到。toString就没有被遍历到。

a是有length但是没有被遍历到。

enumerable属性的意思就是当前属性在遍历的时候是否被展示出来。
定义b的属性,设置为不可遍历。那么遍历出来的是a和c

实际上acb都是有的

enumerable的作用,以数组为例
回去a的属性length的属性描述。

a的0属性 就是可遍历的

可以放心的数组上添加属性,同时不影响以前的代码。下面是增加了name的属性但是循环的时候不想name被循环出来。

一次定义多个属性-defineProperties


如果你想过这样的代码,请问Vue里面是如何做到data和页面上的message双向绑定的

vue的文档里面会提到一个重要的API就是defineProperties

symbol当对象的key



怎么知道一个对象有哪些key。返回的是空的

要用另外的一个api。如果要想获取到一个对象是否有symbol的key必须用getOwnPropertySymbol


用o去读取第0个symbol

总结


一个是设置,一个是获取。

ES6关于对象的所有新增的语法APi就讲完了

结束

很多人已经开始用reasonML。reasonML一门新的前端语言。

ES6深入浅出-5 新版对象-2.属性修饰符的更多相关文章

  1. ES6深入浅出-5 新版对象-1.如何创建对象

    对象属性的加强: 可以通过new Object(), Object.create()方法,或者使用字面量标记(初始化标记)初始化对象. 一个对象初始化器,由花括号/大括号 ({}) 包含的一个由零个或 ...

  2. iOS 属性修饰符记录 --不定时更新

    重新审视了一下OC在属性修饰符,特意记录一下来.以后不定时更新 > retain:只有在非ARC下才会有效,所有如果在ARC下使用了retain修饰也白搭 如以下的data属性用retain修饰 ...

  3. iOS之属性修饰符 retain、strong和copy区别测试

    时不时会有点迷惑属性修饰符retain.strong.copy三者之间的区别,还是把测试过程记录下来好一点! 1.属性修饰符结论 2.给retain.strong.copy修饰的字符串属性赋值指针变化 ...

  4. MVC5中Model层开发数据注解 EF Code First Migrations数据库迁移 C# 常用对象的的修饰符 C# 静态构造函数 MSSQL2005数据库自动备份问题(到同一个局域网上的另一台电脑上) MVC 的HTTP请求

    MVC5中Model层开发数据注解   ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证( ...

  5. C# 常用对象的的修饰符

    class(类) 1.internal 表示类只能在当然程序集中访问,类默认修饰符 2.public 表示所有地方都可以访问,与internal是互斥的 3.abstract 抽象类,不能被实例化,只 ...

  6. UE4C++定义属性修饰符总结

    1.BlueprintAssignable  暴露该属性来在蓝图中进行赋值,用于绑定多播委托 2.BlueprintCallable  用于从蓝图中调用C++原生函数 3.BlueprintReadO ...

  7. Java—匿名对象/内部类/访问修饰符/代码块

    匿名对象 匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. //创建一个普通对象 Person p = new Person(); //创建一个匿名对象 new Pers ...

  8. ES6深入浅出-7 新版的类(上集)-1.介绍原型

    ES6新出的关键class BE受雇与网景开发了JS 当我们在写一个对象的时候,我们实际上内存的形式表示. obj等于一个空对象,可以直接toString.它为什么可以有toString window ...

  9. ES6深入浅出-8 新版的类(下集)-1.简单语法

    回顾 当你声明一个空的对象obj的时候,会生成一块内存这个内存里面什么都没有,自由__proto__存在401的地址. 也就是Object的protototype在内存中的地址 类 通过函数创建类.这 ...

随机推荐

  1. Python语言程序设计(1)--实例1和基本知识点

    记录慕课大学课程<Python语言程序设计>的学习历程. 实例1:温度转换 #温度转换TempStr = input("请输入带有符号的温度值:") #TempStr是 ...

  2. 接口-DBLINK初尝试

    需求: 将寿险核心库中的黑名单数据提取到团险核心中,供团险核心使用,并且在核心前端页面需配置对应的菜单,提供相应的按钮,该接口采用dblink的方式进行提取. 通过本地数据库配置dblink访问远程数 ...

  3. 【贪心】Communication System POJ 1018

    题目链接:http://poj.org/problem?id=1018 题目大意:有n种通讯设备,每种有mi个制造商,bi.pi分别是带宽和价格.在每种设备中选一个制造商让最小带宽B与总价格P的比值B ...

  4. Stone Game II

    Description There is a stone game.At the beginning of the game the player picks n piles of stones in ...

  5. Go读写文件

    Go序列化和反序列化 package main import ( "bufio" "encoding/json" "fmt" "o ...

  6. Python3学习(一)

    基本语法 python3不向下兼容,有些语法跟python2.x不一样,IDLE shell编辑器,快捷键:ALT+p,上一个历史输入内容,ALT+n 下一个历史输入内容.#idle中按F5可以运行代 ...

  7. JavaScript基础——数组

    一 .数组的介绍 1.概念:数据的集合,任何数据都可以放在数组中 2.作用:可以同时操作多个数据 3.数组的创建: 字面量:var arr = [ ]; 构造函数:var arr = new Arra ...

  8. 微信公众号调用外部浏览器打开指定URL链接是如何实现的

    在涉及移动端支付的项目时,由于对支付需求的精细化,不仅需要扫码支付,还有唤醒App支付,另外还有在微信.QQ.支付宝内置浏览器给出相应的提示. 好在国内各大巨头公司在开发浏览器的时候都在浏览器标识上加 ...

  9. CSP-J总结&题解

    总结: 这一次,最后一次,还是不行啊. 文件操作方面:没有FCLOSE,血的教训. 考场复盘: 首先一二题没什么好讲的,秒切.但是第三题由于一开始看出来是完全背包,但是好像又不是,去年又有摆渡车阴影, ...

  10. 洛谷 P3979 遥远的国度

    题目描述 修改某条路径上的值以及询问子树的最小值都最树剖的基础操作,那么如何实现换根呢? 考虑一下三种情况: 1.rot=询问的子树x,答案就是整棵树的最小值 2.rot在x的子树里,只有rot到x这 ...