什么是node's相当于Perl'神奇的“tie()”机制(挂钩/拦截对变量的访问)
What is node's equivalent of Perl's magic `tie()` mechanism (hooking into/intercepting access to variables)?
我正在寻找类似于这个例子的东西,通过用户定义的回调/钩子拦截对字符串、数组和对象变量的访问:
var foo = [];
tie( // hypothetical
foo,
{
STORE: // callback triggered when assigning: foo[index] = value
function(self, index, value) {
if (value.match('fnord')) {
self[index] = "Nothing to see here. Move along.";
return;
}
self[index] = value;
},
FETCH: // callback triggered when accessing: foo[index]
function(self, index) {
if (42 == index) {
return "This is The Answer.";
}
return self[index];
}
}
);
这个概念的工作实现的简单演示:
package Quux;
use Tie::Array ();
use base 'Tie::StdArray';
sub FETCH {
my ($self, $index) = @_;
return 'This is The Answer.' if 42 == $index;
return $self->[$index];
}
sub STORE {
my ($self, $index, $value) = @_;
if ($value =~ 'fnord') {
$self->[$index] = 'Nothing to see here. Move along.';
return;
}
$self->[$index] = $value;
}
package main;
tie my @foo, 'Quux';
@foo = (undef) x 50;
print $foo[42];
$foo[0] = 'fnord';
print $foo[0];
完整文档:tie(概念),tie()
(函数),tie::Array,magic
代理API大致相当于此功能。这是一个ES6特性,但V8已经为它提供了"实验性"支持(用--harmony
或--harmony-proxies
启动节点以启用此特性)。以下是用代理重写的代码片段:
var foo = (function() {
var obj = {};
return Proxy.create({
set: function(self, index, value) {
if (value.match(/fnord/)) {
obj[index] = "Nothing to see here. Move along.";
return;
}
obj[index] = value;
},
get: function(self, index) {
if (42 == index) {
return "This is The Answer.";
}
return obj[index];
}
});
})();
console.log(foo[42]);
foo[0] = 'fnord';
console.log(foo[0]);
相关文章:
- REST的面向公众的身份验证机制
- Bowerrc后安装挂钩不工作
- ES6是否引入了一种机制来生成块范围的函数语句(而不是表达式)
- 在AngularJs中添加轮询机制
- 在本机挂钩之前加载可安装挂钩
- 挂钩到Rails内置远程:true'ajax:成功'事件
- 如何将Sails.js挂钩路由连接到策略
- 通过Ajax调用的轮询机制
- nightwatchjs全局中的测试挂钩前后缺少测试上下文
- 路由中有多个didTransition挂钩
- 挂钩文档.使用函数原型创建元素
- 如何调用索引/索引路由'用户后的s模型挂钩's的授权
- AngularJS中是否存在pre/post$apply挂钩
- 是否有javascript机制来修改图像的EXIF元数据信息
- 关于Angular 1.5零部件生命周期挂钩
- 现有的Web浏览器“chrond”(或等效)机制与JavaScript / AJax一起使用
- setInterval 函数的执行机制是什么
- 自定义镶边扩展程序中的挂钩窗口属性
- 这个排序函数内部的机制是什么
- 什么是node's相当于Perl'神奇的“tie()”机制(挂钩/拦截对变量的访问)