首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

js 问题,自定义对象

发布网友 发布时间:2022-04-26 21:35

我来回答

2个回答

热心网友 时间:2022-05-15 21:15

不管加没加引号,对象的属性名都是字符串。
但是在调用属性时,如果属性名本身是数值,则不能以 obj.2 这样的形式进行调用,只能用 obj["2"] 这种形式调用。为什么呢,请看下面的例子:
首先,假定 obj.2 这样的调用方式是合法的,那么下面的语句也没问题:
alert(obj.2);
但是,如果改成下面这样的方式呢?
with(obj){
alert(2);
}

这时候你究竟让系统把2作为obj的属性呢,还是纯粹的数字2?
所以,为了防止混淆,js中规定所有的名称(比如变量名、对象名、函数名、属性名等等)都要以字母(或者下划线)开头,不能以数字或其他符号开头(当然纯数字就更不可以了)。其实几乎所有的编程语言都有这样的规定的。
至于自定义对象中的数字形式的键,其实并不算是属性名,我们可以把它理解为类似于数组(数组也是对象)中的序号或者索引号。
再补充说一句:尽可能避免用数字来作为对象的键名!追问用数字做建名是建立一个类数组不是么?

追答

如果所有键名都是数字,那就直接建立一个数组了。但是这种数字和字母混杂的情况,很容易引起混淆,而且会造成阅读困难,本来属性名的作用就是帮助代码使用者理解后面值的作用(比如length、push都具有这种作用),但数字(2、3)却无法直观表达意思。我所说的避免的就是指后面这种情况。

其实也可以在对象中包含数组啊,这样层次更加分明。比如:

var obj = {
    'data': [
        'a',
        'b'
    ],
    'length': 8,
    'push': Array.prototype.push
}

热心网友 时间:2022-05-15 22:33

纯数字属性名的使用比较特殊,可以通过对象字面量和obj[number]的形式为对象添加纯数字属性,解释器会自动将数字转换为数字字符串。

追问感谢

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com