前两天在写一个javascript对象时,遇到了一个有点特殊的写法,我学艺不精,所以之前都没有遇到过,瞬间就懵逼了。内容是这样的:
var twoSum = function(nums, target){
var saved={};
var result=[];
for(var i=0; i< nums.length; i++){
if(saved.hasOwnProperty(nums[i])){
result[0] = saved[nums[i]] ;
result[1] = i;
return result
}
saved[target - nums[i]] = i;
}
};
在代码中有这样的一句:
saved[target-nums[i]] = i ;
这个的意思是给对象一个属性赋值,但是这个属性是一个数字,哈哈,这个就很奇怪了。
第一,对象也可以用数组来做属性名;
第二,对象在使用点.操作符来赋值时,数字是错误的,并不能成功。
就因为这个原因,我自己在测试的时候,一直都不正确,在网上找了些列子也没有这个方法,就在csdn的论坛中发了一个帖子。得到了大家的回复,很感谢。
在帖子中是这样说的
(版主大神的回答,清晰明了,感觉自己的javascript还是很low的)
(其他大神的解释,也很清楚明了)
总结:
在对象中,可以使用点和[] 方法来添加和查找属性,但是点有其局限性,在选择中,属性名要符合规则,不规则的属性名不能使用点。可以使用[] 。