对象的两种方法的读取区别

对象有两种读法

例如:

var myCar = new Object();
// 通过点来获取
myCar.make = 'Ford';
myCar.model = 'Mustang';
myCar.year = 1969;
//通过[]来获取
myCar['make'] = 'Ford';
myCar['model'] = 'Mustang';
myCar['year'] = 1969;

这里通过一道题来看一下这两种方法的区别.

count(‘javaScript’) 会返回一个统计结果对象,该对象表示 javaScript 的字符统计结果。
count(‘javaScript’); // 返回结果为 {j: 1, a: 2, v: 1, S: 1, c: 1, r: 1, i: 1, p: 1, t: 1}

第一种做法: 没有任何问题

function count(str){
				var obj={};
				let i;
				let len=str.length;
				for(i=0;i<len;i++){
					if(obj[str[i]]){
						obj[str[i]]++;
					}else{
						obj[str[i]]=1;
					}
				}
				return obj;
			}
			var res=count("javaScript");
			console.log(res);    //Object {j: 1, a: 2, v: 1, S: 1, c: 1…}

第二种做法:

function count(str){
				var obj={};
				let i;
				let len=str.length;
				for(i=0;i<len;i++){
					
					if(obj.str[i]){
						obj[str[i]]++;
					}else{
						obj.str[i]=1;
					}
				}
				return obj;
			}
			var res=count("javaScript");
			console.log(res);   

下面的方法报了以下的错误:
Uncaught TypeError: Cannot read property ‘0’ of undefined
at count (字符串自负统计.html:15)
at 字符串自负统计.html:23

现在我们再来去看文档去查这两种方法的区别:
An object property name can be any valid JavaScript string, or anything that can be converted to a string, including the empty string. However, any property name that is not a valid JavaScript identifier (for example, a property name that has a space or a hyphen, or that starts with a number) can only be accessed using the square bracket notation. This notation is also very useful when property names are to be dynamically determined (when the property name is not determined until runtime).

也就是说[],这种方法会比另一种方法更加使用范围广,有点如下:
1.可以读取key里有空格,数字为开头的key等。
2.当对象的key是会动态绑定的时候只能用这种方法。
这道题目就是对象的key是会动态绑定的,而不是一开始有的,因此你只能通过这种方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值