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. subprocess, re模块,logging, 包等使用方法

    subprocess, re模块,logging, 包等使用方法 subprocess ''' subprocess: sub: 子 process: 进程 可以通过python代码给操作系统终端发送 ...

  2. bay——巡检RAC日志.txt

    -查找超过800M大小文件,并显示查找出来文件的具体大小,可以使用下面命令 find . -type f -size +400M -print0 | xargs -0 du -h --查看当前目录下每 ...

  3. Redis安装和基本操作

    Redis 简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 是属于非关系型数据库1.数据比模型较简单2.需要灵活性更强的IT系统3.对数据库性能 ...

  4. 剑指Offer-33.第一个只出现一次的字符(C++/Java)

    题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 分析: 遍历字符串,利用Ha ...

  5. nginx--代理和负载均衡

    nginx代理 nginx的代理分为正向代理和反向代理 正向代理指的是,一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原 ...

  6. AntzOs系列导航

    Antz操作系统 一个自制的操作系统,Antz .半图形化半命令式系统,同时嵌入Antzscript脚本语言(写在之后). 自制操作系统Antz(1)——Boot Sector 自制操作系统Antz( ...

  7. java类生命周期,类的“加载,连接,初始化,使用,卸载过程”详解

    “ 如果说核心类库的 API 比做数学公式的话,那么 Java 虚拟机的知识就好比公式的推导过程” 每本Java入门书籍在介绍Java这门语言的时候都会提到Java跨平台,“一次解释,到处运行的特点“ ...

  8. swoole client有什么用

    PHP常用socket创建TCP连接,使用CURL创建HTTP连接,为了简化操作,Swoole提供了Client类用于实现客户端功能,并增加了异步非阻塞模式,让用户在客户端也能使用事件循环. 作为客户 ...

  9. vscode相关设置

    一.如何设置vs每次点击文件打开新的窗口: 1.打开设置 2.搜索:"workbench.editor.enablePreview" 3.设置"workbench.edi ...

  10. 解决 layui 弹出层(弹框)一闪而过就消失的问题 (转载)

    转载: 原文链接:https://blog.csdn.net/qq_20594019/article/details/83956532 本人遇到问题:使用layer.open()弹出页面层,出现弹框闪 ...