this.String = {
Get : function (val) {
return function() {
return val;
}
}
};
Run Code Online (Sandbox Code Playgroud)
什么是':'在做什么?
tj1*_*111 10
this.String = {}
指定一个对象. Get
是该对象的属性.在javascript中,对象属性及其值由冒号':'分隔.
因此,根据示例,您可以像这样调用函数
this.String.Get('some string');
Run Code Online (Sandbox Code Playgroud)
更多例子:
var foo = {
bar : 'foobar',
other : {
a : 'wowza'
}
}
alert(foo.bar); //alerts 'foobar'
alert(foo.other.a) //alerts 'wowza'
Run Code Online (Sandbox Code Playgroud)
其他人已经解释了这段代码的作用.它创建一个this.String
包含单个函数(称为Get
)的对象(称为).我想解释你什么时候可以使用这个功能.
在需要更高阶函数(即希望将另一个函数作为其参数的函数)的情况下,此函数非常有用.
假设你有一个函数可以对每个元素做一些事情Array
,让我们调用它map
.您可以像这样使用此函数:
function inc (x)
{
return x + 1;
}
var arr = [1, 2, 3];
var newArr = arr.map(inc);
Run Code Online (Sandbox Code Playgroud)
该map
函数将执行的操作是创建一个包含值的新数组[2, 3, 4]
.它将通过inc
使用数组的每个元素调用函数来完成此操作.
现在,如果你经常使用这个方法,你可能会不断调用map
各种参数:
arr.map(inc); // to increase each element
arr.map(even); // to create a list of booleans (even or odd)
arr.map(toString); // to create a list of strings
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因你想要用相同的字符串替换整个数组(但保持相同大小的数组),你可以像这样调用它:
arr.map(this.String.Get("my String"));
Run Code Online (Sandbox Code Playgroud)
这将创建一个与之相同大小的新数组arr
,但只是"my String"
一遍又一遍地包含该字符串.
请注意,在某些语言中,此函数是预定义的并且被调用const
或constant
(因为它总是返回相同的值,每次调用它时,无论它的参数是什么).
现在,如果你认为这个例子不是很有用,我会同意你的看法.但有些情况下,当使用更高阶函数进行编程时,使用此技术时.
例如,如果您想要"清除"其值但保留树的结构,则它可能很有用.您可以tree.map(this.String.Get("default value"))
创建并创建一个全新的树,其形状与原始树完全相同,但没有任何值.
归档时间: |
|
查看次数: |
316 次 |
最近记录: |