You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
varproxy=newProxy(target,handler);// new Proxy() 生成一个Proxy实例// target 表示所要拦截的目标对象// handler 一个对象,表示用来定制拦截行为
varperson={name: 'yizihan'}varproxy=newProxy(person,{// 重写 (.)方法get: function(target,property){if(propertyintarget){returntarget[property];}else{returnnewReferenceError("Property '"+property+"' does not exist.")}}})varobj=Object.create(proxy);obj.name;// yizihanobj.age;// ReferenceError: Property 'age' does not exist.
代理模式 - Proxy Pattern
当一个昂贵的对象应被实例化时,Proxy模式可以帮助我们对其进行控制,提供高级的方法来引用对象,或修改对象,让它在特定的上下文中以一种特殊方式发挥作用。
jQuery.proxy() 接受函数作为参数,并返回一个始终具有特定上下文的新对象。这确保了函数中this的值是我们所需要的值。
实例需求:按钮点击之后延迟添加类名。
ES6 - Proxy
Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,属于一种“元编程”,即对编程语言进行编程。
Proxy是在目标对象架设一层“拦截”,外界对该对象的访问,都必须先通过这层“拦截”,而这层“拦截”可以对外界的访问进行过滤和改写。
通过
new Proxy()
代理目标对象,目标对象内部的this
会指向Proxy代理。混入 - Mixin Pattern
在一个对象之中混入另外一个对象的方法。
首先设定Mixin包含的方法属性,然后利用原型链继承,从Mixin中继承到子类。
传统继承方式
Mixin方式
Mixin 有助于减少系统中的重复功能代码及增加函数的复用。
ES6方式
装饰者模式 - Decorator Pattern
Decorator 提供了将行为动态添加至系统的现有类的能力
优点:对象可以被新行为包装,然后可以继续被使用,而不必担心被修改的基本对象。这种模式使我们不必依靠大量的子类来获得同样的实现。
ES6 - Decorator
修饰器是一个对类进行处理的函数,修饰器函数的第一个参数,就是所要修饰的目标类。
带参数的修饰器
方法的修饰
修饰器不仅可以修饰类,还可以修饰类的属性。
The text was updated successfully, but these errors were encountered: