Flutter & Dart
移动端洪流
Flutter: Android & ios 原生开发, Google 布局 下一代 客户端 统一开发框架
Dart语言入门
一、DartPad
可以直接在浏览器里编写和运行Dart程序的开源工具
二、Dart SDK
需翻墙,多次安装 可解决
Cocos Creater
游戏开发
ES6 Proxy 代理
个人理解就是代理js原生方法的 代理模式
1. Proxy 支持的拦截操作一览,一共 13 种
get(target, propKey, receiver):拦截对象属性的读取,比如
proxy.foo和proxy['foo']。set(target, propKey, value, receiver): 拦截对象属性的设置,比如
proxy.foo = v或proxy['foo'] = v,返回一个布尔值。has(target, propKey):拦截
propKey in proxy的操作,返回一个布尔值。deleteProperty(target, propKey): 拦截
delete proxy[propKey]的操作,返回一个布尔值。ownKeys(target): 拦截
Object.getOwnPropertyNames(proxy)、Object.getOwnPropertySymbols(proxy)、Object.keys(proxy)、for...in循环, 返回一个数组。
该方法返回目标对象所有自身的属性的属性名,而Object.keys()的返回结果仅包括目标对象自身的可遍历属性。getOwnPropertyDescriptor(target, propKey): 拦截
Object.getOwnPropertyDescriptor(proxy, propKey), 返回属性的描述对象。defineProperty(target, propKey, propDesc): 拦截
Object.defineProperty(proxy, propKey, propDesc)、Object.defineProperties(proxy, propDescs), 返回一个布尔值。preventExtensions(target): 拦截
Object.isExtensible(proxy), 返回一个布尔值。setPrototypeOf(target, proto): 拦截
Object.setPrototypeOf(proxy, proto),返回一个布尔值。如果目标对象是函数,那么还有两种额外操作可以拦截。apply(target, object, args):拦截 Proxy 实例作为函数调用的操作,比如
proxy(...args)、proxy.call(object, ...args)、proxy.apply(...)。construct(target, args):拦截 Proxy 实例作为构造函数调用的操作,比如
new proxy(...args)。
2. Proxy 实例的方法
下面是上面这些拦截方法的详细介绍。
get()
3. Proxy.revocable()
Proxy.revocable方法返回一个可取消的 Proxy 实例。
4. this 问题
ES6 Reflect 映射
1. 概述
Reflect 对象的方法与 Proxy 对象的方法一一对应, 每一个Proxy对象的拦截操作,内部都调用对应的Reflect方法,保证原生行为能够正常执行。
可在此基础上 另外添加额外工作
2. 静态方法
- Reflect.apply(target, thisArg, args)
- Reflect.construct(target, args)
- Reflect.get(target, name, receiver)
- Reflect.set(target, name, value, receiver)
- Reflect.defineProperty(target, name, desc)
- Reflect.deleteProperty(target, name)
- Reflect.has(target, name)
- Reflect.ownKeys(target)
- Reflect.isExtensible(target)
- Reflect.preventExtensions(target)
- Reflect.getOwnPropertyDescriptor(target, name)
- Reflect.getPrototypeOf(target)
- Reflect.setPrototypeOf(target, prototype)
上面这些方法的作用,大部分与 Object 对象的同名方法的作用都是相同的,而且它与Proxy对象的方法是一一对应的。
3. 实例:使用 Proxy 实现观察者模式
观察者模式 ( Observer mode ) 指的是 函数自动观察数据对象,一旦对象有变化,函数就会自动执行。
##