作者:禅与计算机程序设计艺术
1.简介
在JavaScript中代理提供了一种拦截对象行为的机制,其提供了两种类型的代理,分别为函数代理和属性代理。函数代理可以用来控制方法的调用方式、返回值等;属性代理则可以用来实现对对象的属性访问、设置、枚举等过程的控制。在很多情况下,使用代理可以有效地提升应用的灵活性、可扩展性和可测试性。本文将通过两个典型案例来展示JavaScript中的代理,包括函数代理和属性代理。
2.基础概念
2.1 属性访问与赋值
对象在执行属性访问操作时,先搜索自己的实例属性(自身拥有的属性),再搜索原型链上面的属性,最后才会去原型对象的原型链上查找。当执行属性赋值时,也遵循同样的规则。换句话说,访问一个对象的属性,实际上是在搜索它的各个层级上的属性表。例如:
let obj = {
name