当前位置:  开发笔记 > 编程语言 > 正文

代理和目标对象之间的平等

如何解决《代理和目标对象之间的平等》经验,为你挑选了0个好方法。

Javascript的新代理功能提供了一些有趣的调试功能.例如get,如果您访问未定义的属性,则可以通过将其置于具有处理程序的代理服务器来"保护"对象.这有助于捕捉拼写错误和其他类型的错误.

这可以使用这样的东西:

class Something {
    constructor()
    {
        this.foo = "bar";

        allObjects.push(this);
    }
};

function defend(o)
{
    return new Proxy(o, DebugCheckHandler);
};

let rawSomething = new Something();
let defendedSomething = defend(rawSomething);

代码可以勤勉地编写,只处理defendedSomething.但是在此示例中,Something构造函数传递this到其他位置(to allObjects).这最终会产生与使用两者rawSomethingdefendedSomething跨代码库相同的效果.

然后问题出现在代理引用不等于其原始引用的事实上,因为rawSomething !== defendedSomething.例如,allObjects.includes(defendedSomething)如果包含,则返回false rawSomething,因为includes会进行严格===检查.

有没有一种很好的方法可以解决这个问题,而无需对代码进行太多更改?

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有