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

一、object类型
一个object就是一系列属性的集合,一个属性包含一个名字(属性名)和一个值(属性值)。
object对于在应用程序中存储和传输数据而言,是非常理想的选择
二、创建object
创建object实例有两种方法:
- 使用new 操作符后跟object构造函数
- 使用对象初始化器,也就是对象字面量表示法
2.1使用new 操作符后跟object构造函数创建object实例:
var person = new Object();
person.name = "Nicholas";
person.age = 29;
和其他 javascript 变量一样,对象的名字(可以是普通的变量)和属性的名字都是大小写敏感的。
2.2使用对象字面量表示法创建object实例:
var person = {
name : "Nicholas",
age : 29
};
每个属性用”,“隔开,最后一个属性不能加”,“否则在某些浏览器中会报错。
2.2.1在使用字面量表示法时,属性名也可以用字符串表示:
var person = {
"name" : "Nicholas",
"age" : 29,
5:true
};
这个例子包含3个属性:name、age、5,这里的数值属性名会自动转化成字符串。
2.2.2在使用对象字面量表示法时,如果留空{},则可以定义只包含默认属性和方法的对象:
var person = {};
person.name = "Nicholas";
person.age = 29;
向函数传递大量可选参数时,建议使用字面量表示法:
function displayInfo(args) {
var output = "";
if (typeof args.name == "string"){
output += "Name: " + args.name + "\n";
}
if (typeof args.age == "number") {
output += "Age: " + args.age + "\n";
}
alert(output);
}
displayInfo({
name: "Nicholas",
age: 29
});
displayInfo({
name: "Greg"
});
首先使用typeof操作符检测每个属性是否存在,然后再针对这个属性执行操作。
三、object属性表示法
- 点表示法
- []表示法
3.1点表示法
var person = {
"name" : "Nicholas",
"age" : 29
};
alert(person.name);
alert(person.age);
最后两行就是用点表示法获取object属性的。
3.2[]表示法
如下:
var myCar = new Object();
myCar.make = "Ford";
myCar.model = "Mustang";
myCar.year = 1969;
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 循环
该方法依次访问一个对象的自身属性及其原型链中所有可枚举的属性。
var obj = {a:1, b:2, c:3};
for (var prop in obj) {
console.log("obj." + prop + " = " + obj[prop]);
}
prop是属性名。obj[prop]是用[]的方法获取对象的属性值。
4.2Object.keys(o)
该方法返回一个对象自身包含(不包括原型中)的所有属性的名称的数组,该数组所有值均为字符串。
var obj={"No1":"a","No2":"b"}
alert(Object.keys(obj));
4.3Object.getOwnPropertyNames(o)
该方法返回一个数组,它包含了对象 o 所有拥有的属性(无论是否可枚举)的名称。
(未完待续。。。)
从头开始学JavaScript (十一)——Object类型的更多相关文章
- 从头开始学JavaScript (十三)——Date类型
说明:UTC:国际协调日期 GMT:格林尼治标准时间 一.date类型的创建 使用new操作符和Date()构造函数 var now=new Date(): 传入参数:Date.parse()和Dat ...
- 从头开始学JavaScript (十二)——Array类型
原文:从头开始学JavaScript (十二)--Array类型 一.数组的创建 注:ECMAscript数组的每一项都可以保存任何类型的数据 1.1Array构造函数 var colors = ne ...
- 从头开始学JavaScript (八)——变量
原文:从头开始学JavaScript (八)--变量 一.变量分类: 基本类型值:null.undefined.number.string.Boolean: 引用类型值:保存在内存中的对象,如:Obj ...
- 从头开始学JavaScript (四)——操作符
原文:从头开始学JavaScript (四)--操作符 一.一元操作符 1.自增自减操作符:分为前置型和后置型: 前置型:++a;--a; 后置型:a++;a--; 例: <script typ ...
- 从头开始学JavaScript (三)——数据类型
原文:从头开始学JavaScript (三)--数据类型 一.分类 基本数据类型:undefined.null.string.Boolean.number 复杂数据类型:object object的属 ...
- 从头开始学JavaScript (十)——垃圾收集
原文:从头开始学JavaScript (十)--垃圾收集 一.垃圾收集 1.1javascript垃圾收集机制: 自动垃圾收集,执行环境会负责管理代码执行过程中的使用的内存.而在C和C++之类的语言中 ...
- 从头开始学JavaScript (六)——语句
原文:从头开始学JavaScript (六)--语句 一.条件分支语句:if 基本格式: if (<表达式1>){ <语句组1>}else if (<表达式2> ...
- 从头开始学JavaScript (五)——操作符(二)
原文:从头开始学JavaScript (五)--操作符(二) 一.乘性操作符 1.乘法:* 乘法操作符的一些特殊规则: 如果操作数都是数值,按照常规的乘法计算,如果乘积超过了ECMAscri ...
- 从头开始学JavaScript (二)——变量及其作用域
原文:从头开始学JavaScript (二)--变量及其作用域 一.变量 ECMAscript变量是松散型变量,所谓松散型变量,就是变量名称可以保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符 ...
随机推荐
- DM8168 CameraLink 视频噪点问题解决
几天前写过FPGA採集LVDS视频(噪点去除),当时的情况是CameraLink视频出现了非常多噪点,不堪入目,硬件方面没有找到毛病,仅仅能是用硬件描写叙述语言对採集前端的FPGA又一次进行了处理,效 ...
- poj 3414 Pots (bfs+线索)
Pots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10071 Accepted: 4237 Special J ...
- oracle
转让日期格式字符串
字符串传递日期格式 SELECT trunc(to_date(SALE_MON,'yyyy-mm'),'y'),trunc(to_date(SALE_MON,'yyyy-mm'),'mm') FRO ...
- 皮尔逊相似度计算的例子(R语言)
编译最近的协同过滤算法皮尔逊相似度计算.下顺便研究R简单使用的语言.概率统计知识. 一.概率论和统计学概念复习 1)期望值(Expected Value) 由于这里每一个数都是等概率的.所以就当做是数 ...
- 无奈而又苦逼的二分版本号回退法定位新引入的bug!!!
昨天測试人员和开发者都发现, 某新版本号有严重的bug. 群里已经開始嚷嚷了, 但没有谁知道是谁引入的问题.本来呢, 这个问题不应该是由我去定位, 但主管让我帮定位一下, 毕竟时间太紧急, 必须尽快 ...
- Hibernate 映射字段问题[ImprovedNamingStrategy]
Hibernate 使用JPA 对于映射有3种规则能够配置:DefaultNamingStrategy,ImprovedNamingStrategy,EJB3NamingStrategy 这里仅仅说I ...
- Android Studio 1.0 (稳定版) 完全攻略
这篇博文中主要从以下几点进行叙述: 1.Android Studio安装与使用 2.Android Studio特性 3.Android Studio优点 Android Studio 安装与使用 A ...
- Extjs Web Desktop申请书
今天我Web Desktop应用基本完成.多语言支持.现有asp,php,jsp版本号. 废话拍了几张照片让大家有一个直观的了解: watermark/2/text/aHR0cDovL2Jsb2cuY ...
- 父类中可继承方法在处理private的一个demo
public abstract class AbstractParent { public AbstractParent() { System.out.println("Hello,pare ...
- 自己写CPU第九阶段(3)——加载存储指令说明2(swl、swr)
我们会继续上传新书<q=%E8%87%AA%E5%B7%B1%E5%8A%A8%E6%89%8B%E5%86%99CPU&ie=utf-8&src=se_lighten_quot ...