从头开始学JavaScript (十一)——Object类型

简介: 原文:从头开始学JavaScript (十一)——Object类型 一、object类型 一个object就是一系列属性的集合,一个属性包含一个名字(属性名)和一个值(属性值)。 object对于在应用程序中存储和传输数据而言,是非常理想的选择 二、创建object 创建object实例...
原文: 从头开始学JavaScript (十一)——Object类型

一、object类型

一个object就是一系列属性的集合,一个属性包含一个名字(属性名)和一个值(属性值)。

object对于在应用程序中存储和传输数据而言,是非常理想的选择

二、创建object

创建object实例有两种方法:

  • 使用new 操作符后跟object构造函数
  • 使用对象初始化器,也就是对象字面量表示法

2.1使用new 操作符后跟object构造函数创建object实例:

1  var person = new Object();
2         person.name = "Nicholas";
3         person.age = 29;

和其他 javascript 变量一样,对象的名字(可以是普通的变量)和属性的名字都是大小写敏感的。

2.2使用对象字面量表示法创建object实例:

1 var person = {
2             name : "Nicholas",
3             age : 29
4         };

每个属性用”,“隔开,最后一个属性不能加”,“否则在某些浏览器中会报错。

2.2.1在使用字面量表示法时,属性名也可以用字符串表示:

1  var person = {
2             "name" : "Nicholas",
3             "age" : 29,
4               5:true
5         };

这个例子包含3个属性:name、age、5,这里的数值属性名会自动转化成字符串。

2.2.2在使用对象字面量表示法时,如果留空{},则可以定义只包含默认属性和方法的对象:

1  var person = {};
2  person.name = "Nicholas";
3   person.age = 29;

向函数传递大量可选参数时,建议使用字面量表示法:

 1   function displayInfo(args) {
 2             var output = "";
 3         
 4             if (typeof args.name == "string"){
 5                 output += "Name: " + args.name + "\n";
 6             }
 7         
 8             if (typeof args.age == "number") {
 9                 output += "Age: " + args.age + "\n";
10             }
11         
12             alert(output);
13         }
14         
15         displayInfo({ 
16             name: "Nicholas", 
17             age: 29
18         });
19         
20         displayInfo({
21             name: "Greg"
22         });

首先使用typeof操作符检测每个属性是否存在,然后再针对这个属性执行操作。

三、object属性表示法

  • 点表示法
  • []表示法

3.1点表示法

1 var person = {
2             "name" : "Nicholas",
3             "age" : 29
4         };
5 
6         alert(person.name);
7         alert(person.age);

最后两行就是用点表示法获取object属性的。

3.2[]表示法

如下:

1  var myCar = new Object();
2         myCar.make = "Ford";
3         myCar.model = "Mustang";
4         myCar.year = 1969;
5         alert(myCar["make"]+myCar["model"]+myCar["year"]);

最后一行就是用[]表示法来获取object属性的。

 因为每个属性都有一个用于访问它的字符串值(也就是键:值对中的键),所以对象有时也被叫作关联数组。

  • 可以通过变量来访问属性    
var  pName="name";
alert(cat[pName]);
  • 如果属性名中包含会导致语法错误的字符(例如,一个有空格或短横线,或者以数字开头的属性名),或者属性名使用的是关键字或保留字,也可以用方括号表示法。

  cat["lovely brother"]="Tom"; 属性名中包含空格所以不能使用点表示法访问它。

  • 在属性名称是动态判定(属性名只有到运行时才能判定)时非常有用,详见下文中的for...in循环

四、枚举一个对象的所有属性

    • for...in 循环
    • Object.keys(o)
    • Object.getOwnPropertyNames(o)

4.1for...in 循环

该方法依次访问一个对象的自身属性及其原型链中所有可枚举的属性。

1 var obj = {a:1, b:2, c:3};
2         for (var prop in obj) {
3             console.log("obj." + prop + " = " + obj[prop]);
4         }

prop是属性名。obj[prop]是用[]的方法获取对象的属性值。

4.2Object.keys(o)

该方法返回一个对象自身包含(不包括原型中)的所有属性的名称的数组,该数组所有值均为字符串。

1 var obj={"No1":"a","No2":"b"}
2         alert(Object.keys(obj));

4.3Object.getOwnPropertyNames(o)

该方法返回一个数组,它包含了对象 o 所有拥有的属性(无论是否可枚举)的名称。

(未完待续。。。)

目录
相关文章
|
23天前
|
JavaScript
常见函数的4种类型(js的问题)
常见函数的4种类型(js的问题)
11 0
|
1月前
|
JSON JavaScript 前端开发
解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
42 0
|
25天前
|
JavaScript 前端开发
JavaScript 中如何检测一个变量是一个 String 类型?
JavaScript 中如何检测一个变量是一个 String 类型?
21 2
|
3月前
|
JSON JavaScript 前端开发
抓住异常,解救你的代码世界:你应该了解的 JavaScript 异常类型
抓住异常,解救你的代码世界:你应该了解的 JavaScript 异常类型
|
15天前
|
JavaScript
js 字符串String转对象Object
该代码示例展示了如何将一个以逗号分隔的字符串(`'1.2,2,3,4,5'`)转换为对象数组。通过使用`split(',')`分割字符串并`map(parseFloat)`处理每个元素,将字符串转换成浮点数数组,最终得到一个对象数组,其类型为`object`。
|
22天前
|
JavaScript 前端开发
JavaScript数组的功能内置类型
数组是JavaScript的内置类型,JavaScript数组的功能特别强大。下面简单介绍一下JavaScript数组。
|
25天前
|
存储 JavaScript 前端开发
JavaScript 中松散类型的理解
JavaScript 中松散类型的理解
26 3
|
25天前
|
JavaScript 前端开发
JavaScript中Object.prototype.toString.call()、instanceOf和Array.isArray()的区别
JavaScript中Object.prototype.toString.call()、instanceOf和Array.isArray()的区别
25 1
|
1月前
|
存储 JavaScript
JS中Map对象与object的区别
JS中Map对象与object的区别
|
1月前
|
JavaScript
JS之Object.defineProperty方法
JS之Object.defineProperty方法