【问题标题】:JavaScript: The Good Parts : class-free objectsJavaScript:好的部分:无类对象
【发布时间】:2017-12-11 05:25:16
【问题描述】:

在 JavaScript 中:好的部分, 第 3 章,对象

JavaScript 中的对象是无类的。没有任何约束 新属性的名称或属性的值。

声明

对新属性的名称没有限制

为什么它是无类定义的一部分?是不是所有编程语言都通用,无论该语言是无类的还是非无类的?

我理解下面的语句对于无类对象是有意义的。

或关于属性的值。

【问题讨论】:

  • 那么你的问题是什么?
  • 答案:1) 好的... 2) 也许... 3) 好的。看到缺乏细节的相似之处?
  • @charlietfl:修改了问题,现在可能清楚了。

标签: javascript object-type


【解决方案1】:

在许多编程语言中,对象是特定类的实例。这些属性的属性和类型在定义类的代码中定义。作为这些类的实例的对象可以被信任具有该类中定义的属性名称的已定义类型或 null 的值。您不能只向对象添加新属性,并且只能将属性设置为特定类型的值。您可以通过扩展这些语言的类来解决这个问题,但这需要创建一个额外的类。在 PHP、C# 或 Java 中,如果您想创建具有公共属性的 Car 类型的对象来设置和获取颜色,则必须创建一个类。

在 JavaScript 中,您可以随时为任何对象、任何名称和任何值添加新属性。您确实必须创建一个类,然后创建一个作为该类实例的对象。

// object notation
var myCar = new Object();
myCar.color = 'red';
// JSON notation
var myOtherCar = { color: 'red' };
console.log( 'myOtherCar.color: ' + myOtherCar.color );
// see how we initialized the value as a string and then changed it to an array of ints?
myOtherCar.color = [1,2,3,4];
console.log( 'myOtherCar.color: ' + myOtherCar.color );
// see how we created a new property that wasn't declared in a class structure?
myOtherCar.gasTank = .5;
console.log( 'myOtherCar.gasTank: ' + myOtherCar.gasTank );
// Is the gas tank half full or half empty?  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 2015-02-08
    相关资源
    最近更新 更多