Sass mixin 模式
参考柳州大屏、潍坊项目 建立 Sass 公共样式函数库
移动端洪流
Flutter: Android & ios 原生开发, Google 布局 下一代 客户端 统一开发框架
可以直接在浏览器里编写和运行Dart程序的开源工具
需翻墙,多次安装 可解决
个人理解就是代理js原生方法的 代理模式
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)
。
下面是上面这些拦截方法的详细介绍。
get()
Proxy.revocable方法返回一个可取消的 Proxy 实例。
Reflect
对象的方法与 Proxy
对象的方法一一对应, 每一个Proxy
对象的拦截操作,内部都调用对应的Reflect
方法,保证原生行为能够正常执行。
可在此基础上 另外添加额外工作
上面这些方法的作用,大部分与 Object
对象的同名方法的作用都是相同的,而且它与Proxy
对象的方法是一一对应的。
Proxy
实现观察者模式观察者模式 ( Observer mode
) 指的是 函数自动观察数据对象,一旦对象有变化,函数就会自动执行。
##