`

String.prototype.replace(str,func) 例中func的参数问题?

阅读更多
<div id="myDiv"></div>
  <script>
	String.prototype.supplant = function(o){
		return this.replace(/{([^{}]*)}/g,
				function (a,b){
					var r = o[b];
					return typeof r==='string'?r:a;
				}
		);
		
	};

	var template ='<table border="{border}">' +
	'<tr><th>Last</th><td>{last}</td></tr>' +
	'<tr><th>First</th><td>{first}</td></tr>'+
	'</table>';
	var data = {
		first:"Carl",
		last:"Hollywood",
		border:"2"
	};
	myDiv.innerHTML = template.supplant(data);
  </script>


请问一下
function (a,b){
			var r = o[b];
			return typeof r==='string'?r:a;
		}

的a,b是怎样传过来的呢?
分享到:
评论
2 楼 falchion 2008-02-29  
多谢了!  终于找到了

引用
replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。
1 楼 boin 2008-02-27  
a,b 是正则表达式捕获的子匹配

请搜索JS正则表达式相关的内容。

相关推荐

    你必须知道的495个C语言问题(PDF)

    2.10 我的编译器在结构中留下了空洞, 这导致空间浪费而且无法与外 部数据文件进行”二进制” 读写。能否关掉填充, 或者控制结构域 的对齐方式? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.11...

    Function.prototype.apply()与Function.prototype.call()小结

    在JavaScript中,`Function.prototype.apply()` 和 `Function.prototype.call()` 是两种非常重要的方法,它们用于在不同的上下文中调用函数,并允许我们灵活地传递参数。这两个方法的主要区别在于处理参数的方式,但...

    func_DWT.zip_DWT function_func_DWT

    理解这个函数的具体实现,可以帮助我们更好地应用DWT到实际问题中。如果你需要深入学习或使用DWT,建议仔细阅读`func_DWT.m`的代码,并了解MATLAB中的小波变换库,如`wavedec`和`waverec`函数。

    array.prototype.silce.call 理解分析

    `call` 的基本语法是 `func.call(context, arg1, arg2, ..., argN)`,其中 `context` 是希望设置为 `this` 的对象,后面是传递给函数的参数。 现在,当我们把这两个概念结合在一起,`Array.prototype.slice.call` ...

    深入分析js中的constructor和prototype

    我们在定义函数的时候,函数定义的时候函数本身就会默认有一个prototype的属性,而我们如果用new 运算符来生成一个对象的时候就没有prototype属性。我们来看一个例子,来说明这个 代码如下: function a(c){ this.b =...

    double to string

    JavaScript中,`Number.prototype.toString()`方法可以完成转换: ```javascript let num = 3.14159; let strNum = num.toString(); ``` 5. **C#** C#中,`ToString()`方法用于转换: ```csharp double num...

    Makefile基本使用(3)

    在给定的文件列表中,我们看到有`main.c`、`func1.c`、`func2.c`和`func3.c`这些C语言源文件,以及对应的头文件`func1.h`、`func2.h`和`func3.h`。这些文件通常会组成一个小型的C程序,其中`main.c`是主程序,而`...

    C#常用功能类库(20111202最新整理)

    10.SR.ShareFunc.StringFunc.ValidateUnUsedCode 常用验证非法字符、格式转化 五、SR.ShareFunc.WinFunc 11.SR.ShareFunc.WinFunc.FileFunc 11.1 系统垃圾文件清理 11.2 文件的文件名、后缀名、文件路径的处理 ...

    calfunc.zip_breathing477_calFunc

    "calfunc.zip_breathing477_calFunc"这个压缩包文件显然包含了与PHP计算器功能相关的源代码,帮助我们实现基本的四则运算。以下是关于PHP和四则运算实现的详细知识点: 1. **PHP基础**:PHP(Hypertext ...

    ubuntu 下makefile实例讲解

    gcc func1.o func2.o func3.o func4.o func5.o -o main ``` 这个Makefile实例将六个源文件编译成中间代码文件,然后将其链接成一个可执行文件main。 六、结论 Makefile是项目的编译规则文件,掌握Makefile可以...

    Javascript如何实现扩充基本类型

    可以通过给Function.prototype增加方法来使得该方法对所有函数可用。 通过给Function.prototype增加一个method方法,下次给对象增加方法的时候就不必键入prototype这几个字符了。 Function.prototype.method=...

    simplewebrtc.js webrtc网页视频开发帮助工具

    func._groupName = group; (this.callbacks[event] = this.callbacks[event] || []).push(func); return this; }; // Adds an `event` listener that will be invoked a single // time then automatically ...

    swift-将iOS移动配置文件解析为Swift模型

    在iOS开发中,移动配置文件(通常以 `.mobileprovision` 扩展名)是Apple用来管理设备和应用标识的文件。这些文件包含了诸如设备UDID、应用ID、证书信息等关键数据,允许开发者在特定设备上进行测试或分发应用程序。...

    JS trim去空格的最佳实践

    他对 String 对象扩展了一个 trim() 方法: 代码如下: Function.prototype.method = function(name, func) { this.prototype[name] = func; return this; }; String.method(‘trim’, function() { return this....

    C#中Action和Func的区别

    在C#编程语言中,Action和Func是两个非常重要的委托类型,它们被广泛用于方法的传递和回调。了解它们的区别对于编写高效、灵活的代码至关重要。让我们深入探讨这两个概念及其差异。 1. **Func委托** `Func, T2, .....

    proposal-promise-finally:ECMAScript Promise.prototype.finally的提案,规格和参考实现

    ECMAScript Promise.prototype.finally提案,规格和参考实现规范由起草,遵循。 在上获取polyfill / shim。 该提案目前是。基本原理许多promise库都有一个“ finally”方法,用于注册在promise被实现(实现或拒绝)...

    makefile详解

    gcc -o myprogram main.o func1.o func2.o func3.o func4.o func5.o func6.o func7.o func8.o main.o: main.c main.h gcc -c main.c func1.o: func1.c func1.h gcc -c func1.c # 其他源文件的规则省略 # 清除...

    func2func.m v1.0(2009 年 7 月):更新匿名函数工作区。 STR2FUNC(FUNC2STR(f)) 问题的解决方法。-matlab开发

    这有时是不可取的,我们猜测通过使用&gt;&gt; G = str2func(func2str(F)); 我们解决了这个问题,但随后收到警告&gt;&gt; G(2) ??? 未定义的函数或方法 '@(x)A*x' 用于输入类型为“ double”的参数。 因此,被迫使用 EVAL ...

    cec17_func_测试函数_智能算法matlab_

    压缩包内的两个文件,"cec17_func.cpp"和"cec17_func.mexw64",可能分别代表了源代码文件和编译后的可执行文件。".cpp"扩展名暗示这是一个用C++编写的源代码,可能是实现CEC2017测试函数的底层逻辑。".mexw64"是...

Global site tag (gtag.js) - Google Analytics