JavaScript 对象定义

  • JavaScript对象

    在JavaScript中,几乎“一切”都是一个对象。
    • 布尔值可以是对象(如果使用new关键字定义)
    • 数字可以是对象(如果使用new关键字定义)
    • 字符串可以是对象(如果使用new关键字定义)
    • 日期(Date)总是对象
    • 数学(Math)总是对象
    • 正则表达式(RegExp)始终是对象
    • 数组(Array)总是对象
    • 函数(Function)始终是对象
    • 对象(Object)总是对象
    除原始值之外的所有JavaScript值都是对象。
  • JavaScript原始值

    原始值是不具有属性或方法的值。原始数据类型为具有原始值的数据。JavaScript定义了5种原始数据类型:
    • string
    • number
    • boolean
    • null
    • undefined
    原始值是不可变的(它们是硬编码的,因此无法更改)。
    如果x = 3.14,则可以更改x的值。但是你不能改变3.14的值。
    类型 注释
    "Hello" string “Hello”总是“Hello”
    3.14 number 3.14总是3.14
    true boolean true总是true
    false boolean false总是false
    null null (object) null始终为null
    undefined undefined undefined总是undefined的
  • 对象是变量

    JavaScript变量可以包含单个值:
    var person = "John Doe";
    尝试一下
    对象也是变量。但是对象可以包含许多值。值写为name:value对(名称和值以冒号分隔)。
    var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
    尝试一下
  • 对象属性

    JavaScript对象中的命名值称为属性。
    属性
    firstName John
    lastName Doe
    age 50
    eyeColor blue
    写为名称值对的对象类似于:
    • PHP中的关联数组
    • Python中的字典
    • C中的哈希表
    • Java中的哈希映射
    • Ruby和Perl中的哈希
  • 对象方法

    方法是可以在对象上执行的动作。对象属性可以是原始值,其他对象和函数。一个对象的方法是包含一个对象的属性的函数定义。
    属性
    firstName John
    lastName Doe
    age 50
    eyeColor blue
    fullName function() {return this.firstName + " " + this.lastName;}
  • 创建JavaScript对象

    使用JavaScript,您可以定义和创建自己的对象。有不同的方法来创建新对象:
    • 使用对象文字定义和创建单个对象。
    • 使用关键字new定义并创建单个对象。
    • 定义对象构造函数,然后创建构造类型的对象。
    在ECMAScript 5中,还可以使用该函数创建对象Object.create()。

    使用对象文字创建:

    这是创建JavaScript对象的最简单方法。使用对象文字,您可以在一个语句中定义和创建对象。 对象文字是花括号{}内的名称:值对(如age:50)的列表。以下示例创建一个具有四个属性的新JavaScript对象:
    var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
    尝试一下
    空格和换行并不重要。对象定义可以跨越多行:
    var person = {
      firstName: "John",
      lastName: "Doe",
      age: 50,
      eyeColor: "blue"
    };
    尝试一下

    使用JavaScript关键字new:

    以下示例还创建了一个具有四个属性的新JavaScript对象:
    var person = new Object();
    person.firstName = "John";
    person.lastName = "Doe";
    person.age = 50;
    person.eyeColor = "blue";
    尝试一下
    上面的两个例子完全相同。没有必要使用new Object()。 为简单起见,可读性和执行速度,请使用第一个(对象文字方法)。

    JavaScript对象是可变的

    对象是可变的:它们通过引用而不是通过值来传递。如果person是对象,则以下语句将不会创建person的副本:
    var x = person;  // 这不会创建person的副本。
    对象x不是person的副本。person和x都是同一个对象。对x的任何更改也会改变person,因为x和person是同一个对象。
    var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}
    
    var x = person;
    x.age = 10;           // 这将改变x.age和person.age
    尝试一下