Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; };
String.method('deentityify', function() { //请问这个函数时怎么立即执行的 var entity = { quot: '"', lt: '<', gt: '>' }; return function() { return this.replace(/&([^&;]+);/g, function(a, b) { //replace 传给函数的不是三个参数么这两个代表什么? var r = entity[b]; return typeof r === 'string' ? r : a; }); }; }()); //标记
蝴蝶书上看到第四章模块一节遇到的问题, 这个函数不是匿名函数么,按我的理解应该在function函数体外加个括号啊,向这样
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; }); }; })()); //标记
这也能执行, 结果也一样, 但是有什么不同么?
对于没加括号的函数是不是这样,它在执行下面这一句时执行, 这样的话就是函数表达式,也就不需要括号了。
this.prototype[name] = func;
请各位指点一下, 谢谢!
慕勒3428872
相关分类