我正在研究 Caja,但在理解它的工作原理时遇到了一些麻烦:
function Brand() {
var flag = false, payload = null;
return caja.freeze({
seal: function(payloadToSeal) {
function box() {
flag = true;
payload = payloadToSeal;
}
box.toString = function() {
return "(box)";
};
unseal: function(box) {
flag = false;
payload = null;
try {
box();
if (!flag) { throw ...; }
return payload;
} finally {
flag = false;
payload = null;
}
}
});
}
这有一个标题,内容如下:
图 10:权利放大。每个品牌都有一个封印和解封功能,就像一个匹配的加密和解密密钥。密封一个对象会返回一个密封的盒子,这个盒子只能通过相应的开封功能来开封。这里展示的实现技术归功于 M. Stiegler。
这是伪代码吗?我对正在发生的事情感到困惑,例如 atbox()
和throw ...;
。我感谢任何提示或建议。