js中的String.prototype.replace函数

function htmlEncode(str) {

        //var div = document.createElement('div');

        //div.innerText = str;

        //return div.innerHTML;

        var map = {

            '&': '&',

            '<': '&lt;',

            '>': '&gt;',

            '"': '&quot;',

            "'": '&#39;'

        };

        var mapper = function($0) {

            return map[$0];

        };

        return str.replace(/[&<>"']/g, mapper);

    }

    

上面代码中replace函数的第二个参数我看mdn上可以指定一个函数,其例子是

function replacer(match, p1, p2, p3, offset, string) {

  // p1 is nondigits, p2 digits, and p3 non-alphanumerics

  return [p1, p2, p3].join(' - ');

}

var newString = 'abc12345#$*%'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer);

这个例子我勉强可以看懂,可是最上面的代码map是一个对象,map[$0]这是啥意思呢,为啥参数是$0呢。

米脂
浏览 718回答 1
1回答

富国沪深

所以你的问题其实是不理解property accessor简单说,就是通过item[属性名],可以访问到item变量的属性名的值
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript