最近读了下js for webdeveloper一书,有个地方不是很明白:
function createcomparison(pn){
return function (obj1,obj2){
var val1=obj1[pn];
var val2=obj2[pn];
if (val1<val2) {
return -1;
}else if (val1>val2){
return 1;
}else{
return 0;
}
}
}
这个函数的改写:
(1)
function createcompare(pn){
return function(obj1,obj2){
return obj1[pn] - obj2[pn];
}
}
(2)
function createcompare(pn){
return function(obj1,obj2){
return obj1.pn - obj2.pn;
}
}
排序输出:
var data=[{"name":"nicholas","age":23},{"name":"zkil","age":22}];
data.sort(createcompare("name"));
alert(data[0].name);
改写的第一种写法,正常排序,
但是 改写的第二种写法,即obj1[pn]和obj1.pn的不同 ,这种改写法无效;
对象添加属性 应该这两种方法都可以吧,为什么结果却不一样呢?