<code>function returnfunc (propertyName) { return function (obj) { //-----这行定义并返回了一个闭包,也被称之为一个匿名函数 return obj[propertyName]; //这里用方括号法访问属性,因为属性是变量(returnfunc()函数的参数) }; } var savefunc = returnfunc("name"); //调用returnfunc() var result = savefunc({name:"Picasso"});//调用savefunc() alert(result); //返回字符串“Picasso” </code>
Excuse me, name:"Picasso" in savefunc({name:"Picasso"})
<code>function returnfunc (propertyName) { return function (obj) { //-----这行定义并返回了一个闭包,也被称之为一个匿名函数 return obj[propertyName]; //这里用方括号法访问属性,因为属性是变量(returnfunc()函数的参数) }; } var savefunc = returnfunc("name"); //调用returnfunc() var result = savefunc({name:"Picasso"});//调用savefunc() alert(result); //返回字符串“Picasso” </code>
Excuse me, name:"Picasso" in savefunc({name:"Picasso"})
The ones with dots and [] are both ways of expressing the properties of objects, but the latter contains strings. Note that they are strings.
First, after execution, a variable is generated var propertyName = "name";
Then:
<code>var savrfunc = function(obj){ return obj[propertyName]; } </code>
Then the above function is executed and the return value is returned to result;
The execution effect inside is equivalent to:
<code>var obj = {name:"Picasso"}; return obj[propertyName]//上面 已经有这个变了 值是name ;所以就是返回了 obj.name ,相当于把 Picasso给返回出去了。 </code>
has the same effect as .but different usage
<code>var text ='prop'; var obj = { prop:123 }; obj.prop//123 obj.text//undefined obj[text]//123</code>
propertyName is the property name, person[propertyName] is person['name']
return obj[propertyName]; //Use square brackets to access properties here, because properties are variables (please enter code parameters for the returnfunc() function)
It’s all stated in your comments.
There are two ways to access the properties of an object:
obj.attr format, easy to write
obj[attr] form, the attribute name can be in the form of a variable
. and [] can both access objects
Source: "JavaScript Standard Reference Tutorial (alpha)", by Ruan Yifeng