【问题标题】:'this' vs var vs name/value-pair in Objects in JavaScript'this' vs var vs JavaScript 对象中的名称/值对
【发布时间】:2023-12-29 08:44:01
【问题描述】:

我试图了解下面三个版本的代码有什么区别,具体来说:

1) 为什么'this'与对象无关,不应该在这个上下文中使用?

2) 为什么我不能在这个对象中定义一个变量?

3) 我必须在这样的对象中使用名称/值对吗?

如果可能,与其说“在 JavaScript 中你这样做,而不是......”,不如请你给出原因(简单来说是可能的),例如'这条线不起作用的原因是因为......'。

谢谢:)

// 1)
var dog = {this.name = "fido" } // SyntaxError: Unexpected token .

// 2)
var dog = { var name = "fido" } // SyntaxError: Invalid shorthand property initializer

// 3)
var dog = { name: "fido" } // All good.

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。避免一次问多个不同的问题。请参阅“如何提问”页面以获得澄清此问题的帮助。
  • 问和回答了 100 次。请阅读:developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/…

标签: javascript object variables this


【解决方案1】:

1) 为什么“this”与对象无关,不应该在这种情况下使用?

因为this 基本上是绑定到函数(但不是“箭头函数”)或全局范围的自动标识符。它与对象字面量语法之间根本没有关系。

2) 为什么我不能在这个对象中定义一个 var?

因为 JS 中的var 语法专门用于局部变量,而不用于对象属性。语言设计者决定让语法完全不同。

这在局部变量和对象属性之间创建了一个简单、直观的区别。

3) 我必须在这样的对象中使用名称/值对吗?

还有其他语法可能性,但通常是的,要使用对象字面量初始化器定义对象,您可以使用键/值对。

【讨论】: