为了自我提升,我正在阅读(并重读)Señor Crockford 的 TGP。然而,我无法理解他的去实体化方法的最中间部分。
...
return this.replace(...,
function (a, b) {
var r = ...
}
);
我想我明白:
- this.replace 传递了两个参数,作为搜索值的正则表达式和生成替换值的函数;
- b 用于访问实体对象中的属性;
- 返回
? r : a;
位确定是按原样返回文本还是返回实体中相应属性的值。
我根本不明白 a & b 如何作为参数提供给function (a, b)
. 什么在调用这个函数?(我知道整个事情是自动执行的,但这对我来说并没有真正清除它。我想我在问这个函数是如何被调用的?)
如果有人有兴趣进行类似这样的逐次分析,我会非常感激,我怀疑其他人也可能会这样做。
为方便起见,这是代码:
String.method('deentityify', function ( ) {
var entity = {
quot: '"',
lt: '<',
gt: '>'
};
return function () {
return this.replace(
/&([^&;]+);/g,
function (a, b) {
var r = entity[b];
return typeof r === 'string' ? r : a;
}
);
};
}());