JavaScript和方括号表示法

JavaScript和方括号表示法,javascript,object,Javascript,Object,我是Java脚本新手。在我的两本书中:和 两位作者都说,当我们有对象和变量时,这种符号:object[unknownYetProperty]应该起作用,而变量是对象的未来属性。问题是另外两种表示法工作object['unknownYetProperty']和object.unknownYetProperty,但不是第一种 var a1 = 'spring'; var a2 = 'autumn'; var a3 = 'summer'; var object = { propertyA1

我是Java脚本新手。在我的两本书中:和 两位作者都说,当我们有对象和变量时,这种符号:
object[unknownYetProperty]
应该起作用,而变量是对象的未来属性。问题是另外两种表示法工作
object['unknownYetProperty']
object.unknownYetProperty
,但不是第一种

var a1 = 'spring';
var a2 = 'autumn';
var a3 = 'summer';

var object = {
    propertyA1 : a1, // according to books this only this should work :-/
    propertyA2 : a2,
    propertyA3 : a3
}

console.log(object[propertyA1] + ' ' + object['propertyA2'] + ' ' + object.propertyA3);
工作示例:


有人能给我解释一下吗?

使用数组表示法访问的属性应该指定为字符串

object['propertyA1']
是访问对象属性的正确方法


无论何时创建对象,冒号符号的左侧始终是字符串。因此,当使用数组表示法访问时,应将字符串用于属性。

使用数组表示法访问的属性应指定为字符串

object['propertyA1']
是访问对象属性的正确方法


无论何时创建对象,冒号符号的左侧始终是字符串。因此,当使用数组表示法访问时,字符串应该用于属性。

propertyAl
不存在。字符串文字和点符号之所以有效,是因为您正确地访问了对象的属性。在第一个示例中,您试图访问
对象[未定义]
,因为未定义propertyA1。

propertyAl
不存在。字符串文字和点符号之所以有效,是因为您正确地访问了对象的属性。在第一个示例中,您试图访问
对象[undefined]
,因为未定义propertyA1。

对象[propertyA1]的问题是
属性yA1
不存在

基本上,这类似于执行以下操作(这也不起作用):
alert(propertyA1)

与正确引用对象上的字段的其他两个不同:

object['propertyA2'] === object.propertyA2 === a2 == 'autumn'

object.propertyA3 == a3 == 'summer'
这就是它的工作原理:

var propertyA1 = 'propertyA1',
    temp = object[propertyA1]; // === 'spring'

object[propertyA1]
的问题是
propertyA1
不存在

基本上,这类似于执行以下操作(这也不起作用):
alert(propertyA1)

与正确引用对象上的字段的其他两个不同:

object['propertyA2'] === object.propertyA2 === a2 == 'autumn'

object.propertyA3 == a3 == 'summer'
这就是它的工作原理:

var propertyA1 = 'propertyA1',
    temp = object[propertyA1]; // === 'spring'

好吧,当你写这篇文章时:

object['propertyA1']
Javascript试图在对象内部找到名为
propertyA1
的属性

但当您使用:

object[propertyA1]
Javascript试图在名为。。。呃,让我们看看var propertyA1中的内容。。。世界跆拳道联盟?没有具有该名称的变量!!好的,那么propertyA1是未定义的,因此:

object[undefined]

不同之处在于Javascript知道什么是“propertyA1”(字符串xD),但当您删除引号时,这不是字符串,而是您尚未声明的变量。

好吧,当您编写此代码时:

object['propertyA1']
Javascript试图在对象内部找到名为
propertyA1
的属性

但当您使用:

object[propertyA1]
Javascript试图在名为。。。呃,让我们看看var propertyA1中的内容。。。世界跆拳道联盟?没有具有该名称的变量!!好的,那么propertyA1是未定义的,因此:

object[undefined]

不同之处在于Javascript知道什么是“propertyA1”(字符串xD),但当您删除引号时,这不是字符串,这是一个尚未声明的变量。

没有什么要解释的,这是完全正常的,它不起作用。符号2和3确实是正确的,没有什么要解释的,这是完全正常的,它不起作用。注释2和3确实正确,谢谢大家的回复。我不明白的一点是,为什么两位作者都这样写来访问未知属性:-/谢谢大家的回复。我不明白为什么两位作者都这样写来访问未知的财产:-/