使用String.prototype.replace()方法将函数指定为第二个参数

时间:2014-03-21 18:08:29

标签: javascript

“Javascript好的部分”中有一些部分我无法理解

String.method('deentityify',function(){ 
    var entity = {
        quot: '""',
        lt: '<',
        gt: '>'
    };

    return function(){
        return this.replace( /&([^&;]+);/g  , 
            function(a,b){  <-- this line --->
                var r = entity[b];
                return typeof r === 'string' ? r : a ; 
            }
        );
    };
}());

此函数如何获取其参数(a,b)

function(a,b){  <-- this line --->
    var r = entity[b];
    return typeof r === 'string' ? r : a ; 
}

我已经在Mozilla MDN中阅读了这一部分,但我也无法理解:((

所以任何人都可以为我清除它:)

谢谢

1 个答案:

答案 0 :(得分:0)

正则表达式允许您使用括号对结果进行分组。

所以this.replace( /&([^&;]+);/g给你第一个参数匹配的子字符串,第二个参数给你括号内的匹配。

看这里: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

Specifying a string as a parameter部分,您将找到详细说明。