从头开始学JavaScript (十一)——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 所有拥有的属性(无论是否可枚举)的名称。

(未完待续。。。)

时间: 2024-10-10 05:48:11

从头开始学JavaScript (十一)——Object类型的相关文章

从头开始学JavaScript (四)——操作符

原文:从头开始学JavaScript (四)--操作符 一.一元操作符 1.自增自减操作符:分为前置型和后置型: 前置型:++a;--a; 后置型:a++;a--; 例: 1 <script type="text/javascript"> 2 var a, b,i= 1,j=1; 3 a=i++; 4 b=++j; 5 alert("a="+a+",i="+i+",b="+b+",j="+j);

从头开始学JavaScript (二)——变量及其作用域

原文:从头开始学JavaScript (二)--变量及其作用域 一.变量 ECMAscript变量是松散型变量,所谓松散型变量,就是变量名称可以保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符. 定义:var firstDemo; 二.变量的作用域 2.1基本概念 使用var 定义变量:定义该变量的作用域的局部变量,这种定义变量的方法也被成为显式声明. 这么说不理解的话可以看看下面这个简单粗暴的例子: test();function test(){var firstDemo="hello

从头开始学JavaScript (十)——垃圾收集

原文:从头开始学JavaScript (十)--垃圾收集 一.垃圾收集 1.1javascript垃圾收集机制: 自动垃圾收集,执行环境会负责管理代码执行过程中的使用的内存.而在C和C++之类的语言中,开发人员的一项基本任务就是手动跟踪内存的使用情况,这是造成许多问题的一个根源.在编写javascript程序时候,开发人员不用再关心内存使用的问题,所需内存的分配 以及无用的回收完全实现了自动管理. 1.2垃圾收集原理: 找出那些不再继续使用的变量,然后释放其中占用的内存. 垃圾收集器会按照固定的

从头开始学JavaScript (六)——语句

原文:从头开始学JavaScript (六)--语句 一.条件分支语句:if 基本格式: if (<表达式1>){    <语句组1>}else if (<表达式2>){    <语句组2>}else{    <语句组3>} 执行流程: 二.循环语句 2.1前测试循环语句:在循环体内的代码被执行之前就对出口条件求值. 2.1.1while语句 基本格式: do {    <语句组>} while (<表达式>)  执行流程

从头开始学JavaScript (七)——函数

原文:从头开始学JavaScript (七)--函数 一.return 函数在执行完return之后停止并立即退出. return返回值:与return: 如下两个例子: 1 function sum(num1, num2) { 2 num1= num1 + num2; 3 return num1; 4 } 5 6 var result = sum(5, 10); 7 alert(result);//15 function sum(num1, num2) { num1= num1 + num2;

从头开始学JavaScript (九)——执行环境和作用域

原文:从头开始学JavaScript (九)--执行环境和作用域 一.执行环境:定义了变量或者函数有权访问的其他数据,决定了它们各自的行为.每个执行环境都有与之关联的变量对象. 变量对象:保存着环境中定义的变量和函数. 作用域链:保证对执行环境有权访问的所有变量和函数的有序访问. 标识符解析:沿着作用域链一级一级地搜索标识符的过程. 通过例子来说明执行环境.变量对象以及作用域链: 1 <script type="text/javascript"> 2 var color =

从头开始学JavaScript 笔记(三)——数据类型

一.分类 基本数据类型:undefined.null.string.Boolean.number 复杂数据类型:object object的属性以无序的名称和值对的形式 (name : value) 来定义 二.详解 1.undefined:undefined类型只有一个值:undefined,在使用var对变量进行声明但未初始化时,这个变量的值就是undefined. 包含undefined值的变量与尚未定义的变量是不一样的,以下这个例子可以说明: var demo1;//声明但未初始化 al

从头开始学JavaScript (三)——数据类型

一.分类 基本数据类型:undefined.null.string.Boolean.number 复杂数据类型:object object的属性以无序的名称和值对的形式 (name : value) 来定义 二.详解 1.undefined:undefined类型只有一个值:undefined,在使用var对变量进行声明但未初始化时,这个变量的值就是undefined. 包含undefined值的变量与尚未定义的变量是不一样的,以下这个例子可以说明: var demo1;//声明但未初始化 al

浅谈JavaScript的Object类型

<JavaScript高级程序设计>第三版 P35 认识对象 书上一句话总结了对象:对象就是一组数据和功能的集合.(听着很简单!但是,这个集合到底是什么,该怎么用...一脸懵逼) 在ES中,Object类型是所有它的实例的基础.也就是Object类型所具有的的任何属性和方法也同样存在更具体的对象中. var obj = new Object(); obj.name = 'zs'; obj.sayHi = function () { console.log('Hi'); } console.lo