ES3、ES5、ES6对象代理的写法差异
ES3的对象代理写法:
console.log('定义私有变量ES3写法:')
// ES3
var Person = function (){
var data = {
name:'ES3',
age:14,
sex:'nv'
}
// 读API
this.get = function(key){
return data[key]
}
// 写API
this.set = function(key,value){
if(key !== 'sex'){
data[key] = value
}
}
}
// 声明一个实例
var person = new Person();
// 读取
console.table({name:person.get('name'),age:person.get('age'),sex:person.get('sex')});
// 修改
person.set('name','c-ES3') // 修改name为c-ES3
console.table({name:person.get('name'),age:person.get('age'),sex:person.get('sex')});
person.set('sex','nan') // 修改sex为nan 修改失败,因为被设置了保护
console.table({name:person.get('name'),age:person.get('age'),sex:person.get('sex')});
ES5的对象代理写法:
console.log('定义私有变量ES5写法:')
// ES5
var Person = {
name:'ES5',
age:14
}
// 设置保护,不可被写
Object.defineProperty(Person,'sex',{
writable:false,
value:'nv'
})
// 读取
console.table({
name:Person.name,
age:Person.age,
sex:Person.sex
})
// 修改
Person.name = 'c-ES5' // 修改name为c-ES5
console.table({
name:Person.name,
age:Person.age,
sex:Person.sex
})
Person.sex = 'nan' // 修改sex为nan 修改失败,因为被设置了保护
console.table({
name:Person.name,
age:Person.age,
sex:Person.sex
})
ES6的对象代理写法:
console.log('定义私有变量ES6写法:')
let Person1 = {
name:'ES6',
age:14,
sex:'nv'
}
// 设置对象代理
let person1 = new Proxy(Person1,{
// 读
get(target,key){
return target[key]
},
// 写
set(target,key,value){
if(key !== 'sex'){
target[key] = value
}
}
});
// 读取
console.table({
name:person1.name,
age:person1.age,
sex:person1.sex
})
// 修改name为c-ES6
person1.name = 'c-ES6'
console.table({
name:person1.name,
age:person1.age,
sex:person1.sex
})
// 修改sex为nan 修改失败,因为被设置了保护
person1.sex = 'nan'
console.table({
name:person1.name,
age:person1.age,
sex:person1.sex
})
ES3、ES5、ES6对象代理的写法差异的更多相关文章
- ES5和ES6对象导出和导入(转载,待整理)
1.import ... form...替代 require() //不接收对象 require:require('s.css'); //(es5) improt 's.css' //(es6) // ...
- React Native 的ES5 ES6写法对照表
模块 引用 在ES5里,如果使用CommonJS标准,引入React包基本通过require进行,代码类似这样: //ES5 var React = require("react" ...
- React/React Native 的ES5 ES6写法对照表
//es6与es5的区别很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component ...
- React/React Native 的ES5 ES6写法对照表-b
很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教 ...
- 【转】React Native中ES5 ES6写法对照
很多React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教程和例子都是 ...
- React Native之ES5/ES6语法差异对照表
很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教 ...
- es6对象内函数的两种写法
es6对象内函数一般有两种写法: var person1 = { name: "p1", sayThis() { console.log(this); } }; var perso ...
- React/React Native的 ES5 ES6 写法对照
ES5 ES6 模块 var React = require("react-native); var { Image, Text, View } = React; import Re ...
- 简述ES5 ES6
很久前的某一天,一位大神问我,你知道ES6相对于ES5有什么改进吗? 我一脸懵逼的反问,那个啥,啥是ES5.ES6啊. 不得不承认与大神之间的差距,回来深思了这个问题,结合以前的知识,算是有了点眉目. ...
随机推荐
- mongodb4版本,windows下的安装与配置(史上步骤最全最详细+图解)
安装的是4.2.1版本,安装途中出现过很多错误,找遍各种博客基本没能解决 1.mongodb安装的官方地址: https://www.mongodb.com/download-center/commu ...
- STM32F373(青风)+CUBEMX快速上手
STM32F373(青风)+CUBEMX快速上手 Created: Nov 23, 2019 7:43 PM Tags: CUBEMX,STM32 硬件熟悉 连接线 USB-TYPEB电源线一根,用于 ...
- 如何在mysql数据库生成百万条数据来测试页面加载速度
1.首先复制一条sql 在复制前,需要确定该记录是否有主键 若无,则代码非常简单, "; 复制的表名↑ 粘贴的表名↑ ...
- MATLAB实例:将批量的图片保存为.mat文件
MATLAB实例:将批量的图片保存为.mat文件 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.彩色图片 图片数据:horse.rar 1. MA ...
- 算法问题实战策略 GALLERY
地址 https://algospot.com/judge/problem/read/GALLERY 分析 如图 显然是需要在 0 1 2三个点进行监控即可.(0 2 3 也可) 根据题意,不存在回路 ...
- 【WPF on .NET Core 3.0】 Stylet演示项目 - 简易图书管理系统(2) - 单元测试
上一章中我们完成了一个简单的登录功能, 这一章主要演示如何对Stylet工程中的ViewModel进行单元测试. 回忆一下我们的登录逻辑,主要有以下4点: 当"用户名"或" ...
- OpenDaylight开发hello-world项目之代码框架搭建
OpenDaylight开发hello-world项目之开发环境搭建 OpenDaylight开发hello-world项目之开发工具安装 OpenDaylight开发hello-world项目之代码 ...
- 1+x 证书 Web 前端开发中级理论考试(试卷 7 ) 答案
1+x 证书 Web 前端开发中级理论考试(试卷 7 ) 答案 转载请注明来源:妙笔生花个人博客http://blog.zh66.club/index.php/archives/438/ 官方QQ群 ...
- 【zabbix告警配置】zabbix服务配置邮件告警
一.安装邮件服务 在zabbix_server服务端安装邮件和邮件发送服务,这里可以参考我另一篇邮件服务部署文章:https://www.cnblogs.com/HeiDi-BoKe/p/118833 ...
- Eclipse引入自定义XML约束文件(DTD,SCHEMA)问题
Eclipse引入自定义XML约束文件(DTD,SCHEMA)问题 1:说明 使用Eclipse 编写xml文件的约束文件的,包括DTD约束文件,Schema约束文件的时候, 我们也需要接受eclip ...