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对象代理的写法差异的更多相关文章

  1. ES5和ES6对象导出和导入(转载,待整理)

    1.import ... form...替代 require() //不接收对象 require:require('s.css'); //(es5) improt 's.css' //(es6) // ...

  2. React Native 的ES5 ES6写法对照表

    模块 引用 在ES5里,如果使用CommonJS标准,引入React包基本通过require进行,代码类似这样: //ES5 var React = require("react" ...

  3. React/React Native 的ES5 ES6写法对照表

    //es6与es5的区别很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component ...

  4. React/React Native 的ES5 ES6写法对照表-b

    很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教 ...

  5. 【转】React Native中ES5 ES6写法对照

    很多React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教程和例子都是 ...

  6. React Native之ES5/ES6语法差异对照表

    很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教 ...

  7. es6对象内函数的两种写法

    es6对象内函数一般有两种写法: var person1 = { name: "p1", sayThis() { console.log(this); } }; var perso ...

  8. React/React Native的 ES5 ES6 写法对照

      ES5 ES6 模块 var React = require("react-native); var { Image, Text, View } = React;   import Re ...

  9. 简述ES5 ES6

    很久前的某一天,一位大神问我,你知道ES6相对于ES5有什么改进吗? 我一脸懵逼的反问,那个啥,啥是ES5.ES6啊. 不得不承认与大神之间的差距,回来深思了这个问题,结合以前的知识,算是有了点眉目. ...

随机推荐

  1. Octave中的矩阵常用操作2

    sum(a):矩阵里的数据求和prod(a):乘积floor(a):向上取整ceil(a):向下取整max(A,[],1):取每一列的最大值max(A,[],2):取每一行的最大值max(max(A) ...

  2. driver.find_element_by_xpath.clear()无法清空输入框默认值

    输入框带默认值,想删除默认值,填写新内容,使用clear()再send_keys(), 发现这种方式无法清除,只会在默认值后面追加新的内容. 上网搜了一下,有两种解决方案,如下: 方法一: 先双击,后 ...

  3. 压测工具ab

    1.安装abyum install httpd-tools 2.使用ab -n 2000 -c 2 http://www.cctv.com-n:总的请求数-c:并发数-k:是否开启长连接 3.结果举例 ...

  4. linux的路由功能实现

    参考URL: https://blog.csdn.net/chengqiuming/article/details/80140768 一,启用Linux的路由转发功能. 二,新建veth pair 三 ...

  5. CentOS 7 配置SVN 笔记

    一.通过yum 安装软件 yum install subversion -y 配置nfs 用来做版本库(略过) 格式 : NFS共享的目录 NFS客户端地址1(参数1,参数2,...) 客户端地址2( ...

  6. 201871010116-祁英红《面向对象程序设计(java)》第十三周学习总结

    博文正文开头格式:(2分) 项目 内容 <面向对象程序设计(java)> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://ww ...

  7. 题解:A

    A (a.pas/c/cpp) [题目描述] 对于给定的一个正整数n, 判断n是否能分成若干个正整数之和 (可以重复) , 其中每个正整数都能表示成两个质数乘积. [输入描述] 第一行一个正整数 q, ...

  8. QT新建空白项目-添加QT设计师界面类时出现的各种库无法导入识别

    按照教材上先新建一个空的项目--添加Qt设计师界面类时 出现各种 库无法识别 解决方法: 在 .pro文件中加入一行 QT += widgets 去构建中先执行 qmake 然后再构建一下  ok了 ...

  9. Noip刷题计划

    写在前面 去年也想刷10年NOIP来着..结果刷到13年就没动力了233... 今年一定要完成目标啊!! "愿你明日重生,醒时心存冬阳" 2018年 题目 首次得分 出错原因 考点 ...

  10. Python ASCII码与字符相互转换

    ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和 ...