编辑这个页面须要登录或更高权限!

JavaScript 创建对象

对象是由属性方法的集合组成的数据类型。

就像许多其他编程语言一样,可以将JavaScript中的对象与现实生活中的对象进行比较。

在JavaScript中,基本上所有东西都是对象:

  • 字符串可以是对象(如果使用new关键字定义)

  • 数字可以是对象(如果使用new关键字定义)

  • 布尔值可以是对象(如果使用new关键字定义)

  • 日期始终是对象

  • 数学永远是对象

  • 数组始终是对象

  • 正则表达式始终是对象

  • 函数永远是对象

  • Object就是对象

除原语外,所有JavaScript值都是对象。

JavaScript基元

原始值是没有属性或方法的值。

在JavaScript中,有5种原始类型:

  • string

  • number

  • boolean

  • null

  • undefined

对象是变量

JavaScript变量只能包含一个值。

var user = "(cainiaojc.com)";
测试看看‹/›

对象也是变量,但是对象可以包含许多值。

可以将对象写为name:value对,并用冒号(:)分隔。

var user = {firstName:"维沙尔", lastName:"乔达里", age:22, location:"新德里"};
测试看看‹/›

JavaScript对象是无序属性的集合。

对象属性

属性是对象中名称和值之间的关联,并且可以包含任何数据类型。

属性通常是指对象的特征。

属性属性值
firstName维沙尔
lastName乔达里
age22
location新德里

您将在下一章中了解有关属性的更多信息。

对象方法

方法是作为对象属性值的函数,因此是对象可以执行的任务。

方法存储在属性中作为函数定义

属性适当的价值
firstName维沙尔
lastName乔达里
age22
location新德里
getNamefunction() {返回 this.firstName + " " + this.lastName;}

注意:方法是作为属性存储的函数。

创建一个JavaScript对象

JavaScript有许多预定义的对象。另外,您可以创建自己的对象。

有多种创建新对象的方法:

  • 使用对象常量,它使用大括号:{}

  • 使用对象构造函数,它使用new Object()

  • 或者,您可以先创建一个构造函数   ,然后示例化一个调用该函数的对象

使用对象常量

使用对象常量是创建JavaScript对象的最简单方法。

使用对象常量,您可以在一个语句中定义和创建一个对象。

下面的示例创建一个具有四个属性的新JavaScript对象:

var user = {firstName:"维沙尔", lastName:"乔达里", age:22, location:"新德里"};
测试看看‹/›

对象定义可以跨越多行:

var user = {
  firstName: "维沙尔",
  lastName : "乔达里",
  age  : 22,
  location : "新德里"
};
测试看看‹/›

使用new Object()

使用对象构造函数是创建JavaScript对象的另一种方法。

下面的示例创建一个具有四个属性的新JavaScript对象:

var user = new Object();

user.firstName = "维沙尔";
user.lastName = "乔达里";
user.age = 22;
user.location = "新德里";
测试看看‹/›

上面的两个示例完全相同。无需使用new Object()。

使用对象字面量是更常见和首选的方法,因为它不太可能出现不一致和意外结果。

使用构造函数

另外,您可以通过以下两个步骤创建对象:

  • 通过编写构造函数定义对象类型(约定中使用大写首字母)

  • 使用new关键字创建对象的示例

下面的示例通过编写构造函数定义对象类型:

  function User(fname, lname, age, loc) {
   this.firstName = fname;
   this.lastName = lname;
   this.age = age;
   this.location = loc;
  }

现在我们可以创建一个名为user1的对象,如下所示:

var user1 = new User("维沙尔", "乔达里", 22, "新德里");
测试看看‹/›

我们将在本教程的后面部分讨论构造函数

JavaScript对象是可变的

可变是一种可以更改的变量。在JavaScript中,只有对象和数组是可变的,不是原始值。

可变对象是一种对象,其状态在创建后即可修改。

不可变对象是一旦创建对象便无法更改其状态的对象。

字符串数字不可变的。让我们用一个示例来理解这一点:

  var immutableString = "Hello";
  
  // 在上面的代码中,创建了一个带有字符串值的新对象。
  
  immutableString = immutableString + "World";
  
  // 我们现在将“World”附加到现有值。

在将“ immutableString”附加到字符串值后,将发生以下事件:

  • 检索“ immutableString”的现有值

  • “World”附加到“ immutableString”的现有值之后

  • 然后将结果值分配给新的内存块

  • 现在," immutableString" 对象指向新创建的内存空间

  • 以前创建的内存空间现在可用于垃圾回收

对象是可变的:它们是通过引用而不是值来寻址的。

如果user是对象,则以下语句将不会创建该用户的副本:

  var x = user;  // 这不会创建user副本.

对象x不是user的副本,它是user。x和user是同一个对象。

对x的任何更改也将更改user,因为x和user是相同的对象。

var user = {firstName:"维沙尔", lastName:"乔达里", age:22, location:"新德里"};

var x = user;
x.location = "Goa";// 这将同时更改x.location和user.location
测试看看‹/›

比较对象

在JavaScript中,对象是引用类型。即使两个不同的对象具有相同的属性,它们也永远不会相等。

// 两个变量,两个具有相同属性的不同对象
var fruit = {name: "apple"};
var fruitbear = {name: "apple"};

fruit == fruitbear;  // 返回 false
fruit === fruitbear; // 返回 false
测试看看‹/›

仅将同一对象引用与其自身进行比较会得出true:

// 两个变量,一个对象
var fruit = {name: "apple"};
var fruitbear = fruit;  // 将fruit对象引用分配给fruitbear

// 这里的fruit 和 fruitbear 都指向同一个对象
fruit == fruitbear; // 返回 true
fruit === fruitbear; // 返回 true
测试看看‹/›

JavaScript菜鸟教程
JavaScript 对象
JavaScript 函数
JS HTML DOM
JS 浏览器BOM
AJAX 菜鸟教程
JavaScript 参考手册