我有一个(相当哲学的)问题涉及cyclejs
组件:isolate() 引用透明吗?.
查看此后复制的简化代码,我无法区分任何“杂质”来源。那是因为未简化的代码引入了它,还是因为该函数将返回具有两个不同引用的两个不同对象?
在那种情况下,这两个对象不会有相同的行为(即在相同的目标上侦听和响应相同的事件,并产生不同的 vTree$ 但封装完全相同的序列?)。如果是这样,这两个对象不是本质上相同吗,即在程序中的任何地方用另一个替换一个不应该改变任何东西?哪种方式isolate
是参照透明的?我哪里做错了?
实际上,如果两个调用都返回无法替换的不同对象,那么这些对象有何不同?
function isolate(Component, scope) {
return function IsolatedComponent(sources) {
const {isolateSource, isolateSink} = sources.DOM;
const isolatedDOMSource = isolateSource(sources.DOM, scope);
const sinks = Component({DOM: isolatedDOMSource});
const isolatedDOMSink = isolateSink(sinks.DOM, scope);
return {
DOM: isolatedDOMSink
};
};
}