一篇文章教会你使用 JavaScript 创建对象

开发 前端
本文基于JavaScrip基础,介绍如何去创建一个对象,通过从最基础的对象属性,对象方法,使用new Object()创建构造方法,最后介绍了对象的可变性,比较对象。通过案例的分析,能够帮助读者更快的理解对象。

[[442481]]

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

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

一、JavaScript基元

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

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

string、number、boolean、null、undefined。

1. 对象是变量

JavaScript变量只能包含一个值。

  1. <!DOCTYPE html> 
  2. <html> 
  3.     <title>JavaScript 变量只能包含一个值</title> 
  4.  
  5.     <body style="background-color: aqua;"
  6.  
  7.         <p> JavaScript变量只能包含一个值:</p> 
  8.  
  9.         <p id="output"></p> 
  10.  
  11.         <script> 
  12.             var user = "baidu.com"
  13.             document.getElementById("output").innerHTML = user
  14. </script> 
  15.  
  16.     </body> 
  17. </html> 

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

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

  1. <script> 
  2. // 创建对象 
  3. var user = {firstName:"Json", lastName:"nhooo", age:22, location:"New Delhi"}; 
  4.  
  5. //显示来自对象的数据 
  6. document.getElementById("para").innerHTML = user.firstName + 
  7. " lives in " + user.location; 
  8. </script> 

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

2. 对象属性

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

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

3. 对象方法

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

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

  1. getName  function() { 
  2.   返回 this.firstName + " " + this.lastName; 

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

二、创建一个JavaScript对象

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

  • 使用对象常量,它使用大括号:{}。
  • 使用对象构造函数,它使用new Object()。
  • 或者,您可以先创建一个构造函数 ,然后示例化一个调用该函数的对象。

1. 使用对象常量

使用对象常量是创建JavaScript对象的最简单方法,使用对象常量,可以在一个语句中定义和创建一个对象。

案例:

创建一个具有四个属性的新JavaScript对象:

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

对象定义可以跨越多行:

  1. var user = { 
  2.   firstName: "维沙尔"
  3.   lastName : "乔达里"
  4.   age  : 22, 
  5.   location : "新德里" 
  6. }; 

2. 使用new Object()

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

创建一个具有四个属性的新JavaScript对象

例: 

  1. var user = new Object(); 
  2.  
  3. user.firstName = "维沙尔"
  4. user.lastName = "乔达里"
  5. user.age = 22; 
  6. user.location = "新德里"

注:

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

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

3. 使用构造函数

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

  • 通过编写构造函数定义对象类型(约定中使用大写首字母)。
  • 使用new关键字创建对象的例。

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

  1. function User(fname, lname, age, loc) { 
  2.   this.firstName = fname; 
  3.   this.lastName = lname; 
  4.   this.age = age; 
  5.   this.location = loc; 
  6.  } 

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

  1. var user1 = new User("维沙尔""乔达里", 22, "新德里"); 

三、JavaScript对象是可变的

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

可变对象是一种对象,其状态在创建后即可修改。不可变对象是一旦创建对象便无法更改其状态的对象。字符串和数字是不可变的。

用一个例来理解这一点:

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

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

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

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

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

  1. var user = {firstName:"维沙尔", lastName:"乔达里", age:22, location:"新德里"}; 
  2.  
  3. var x = user
  4. x.location = "Goa";// 这将同时更改x.location和user.location 

比较对象

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

  1. // 两个变量,两个具有相同属性的不同对象 
  2. var fruit = {name"apple"}; 
  3. var fruitbear = {name"apple"}; 
  4.  
  5. fruit == fruitbear;  // 返回 false 
  6. fruit === fruitbear; // 返回 false 

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

  1. // 两个变量,一个对象 
  2. var fruit = {name"apple"}; 
  3. var fruitbear = fruit;  // 将fruit对象引用分配给fruitbear 
  4.  
  5. // 这里的fruit 和 fruitbear 都指向同一个对象 
  6. fruit == fruitbear; // 返回 true 
  7. fruit === fruitbear; // 返回 true 

四、总结

本文基于JavaScrip基础,介绍如何去创建一个对象,通过从最基础的对象属性,对象方法,使用new Object()创建构造方法,最后介绍了对象的可变性,比较对象。通过案例的分析,能够帮助读者更快的理解对象。

欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

代码很简单,希望对你学习有帮助。

 

责任编辑:姜华 来源: 前端进阶学习交流
相关推荐

2020-11-13 08:14:28

JavaScript

2023-06-21 00:10:17

JSONWeb服务器JavaScript

2021-02-19 19:35:53

SVG 形状元素

2019-10-17 19:15:22

jQueryJavaScript前端

2021-03-02 18:35:27

SVG开发空间

2021-02-17 20:40:22

SVG图像模式

2020-12-01 09:36:35

SVG元素属性

2021-05-29 10:20:54

GoModules语言

2021-09-15 10:00:33

Go语言Modules

2021-03-19 10:01:41

SVG画多边形Htm基础

2021-02-24 10:14:04

PythonClassPython基础

2020-12-10 08:20:27

Python微博评论

2020-12-16 08:07:28

语言基础反射

2021-12-30 10:28:30

Python 微博评论

2023-05-30 15:06:21

JavaScript属性开发

2021-07-02 10:00:50

JavaScriptObject 函数

2020-10-22 09:08:34

JavaScript

2023-07-06 14:40:38

2024-09-02 14:07:05

2023-08-27 15:18:17

JavaScriptRegExp
点赞
收藏

51CTO技术栈公众号