# JavaScript 对象
**JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...**
**此外,JavaScript 允许自定义对象。**
## JavaScript 对象
JavaScript 提供多个_内建_对象,比如 String、Date、Array 等等。
对象只是带有_属性_和_方法_的特殊数据类型。
## 访问对象的属性
属性是与对象相关的值。
访问对象属性的语法是:
```
_objectName_._propertyName_
```
这个例子使用了 String 对象的 length 属性来获得字符串的长度:
```
var message="Hello World!";
var x=message.`length`;
```
在以上代码执行后,x 的值将是:
```
12
```
## 访问对象的方法
方法是能够在对象上执行的动作。
您可以通过以下语法来调用方法:
```
_objectName_._methodName_()
```
这个例子使用了 String 对象的 toUpperCase() 方法来将文本转换为大写:
```
var message="Hello world!";
var x=message.`toUpperCase()`;
```
在以上代码执行后,x 的值将是:
```
HELLO WORLD!
```
## 创建 JavaScript 对象
通过 JavaScript,您能够定义并创建自己的对象。
创建新对象有两种不同的方法:
1. 定义并创建对象的实例
2. 使用函数来定义对象,然后创建新的对象实例
## 创建直接的实例
这个例子创建了对象的一个新实例,并向其添加了四个属性:
### 实例
```
person=new Object();
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";
```
替代语法(使用对象 literals):
### 实例
```
person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};
```
## 使用对象构造器
本例使用函数来构造对象:
### 实例
```
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}
```
## 创建 JavaScript 对象实例
一旦您有了对象构造器,就可以创建新的对象实例,就像这样:
```
var myFather=new person("Bill","Gates",56,"blue");
var myMother=new person("Steve","Jobs",48,"green");
```
## 把属性添加到 JavaScript 对象
您可以通过为对象赋值,向已有对象添加新属性:
假设 personObj 已存在 - 您可以为其添加这些新属性:firstname、lastname、age 以及 eyecolor:
```
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";
x=person.firstname;
```
在以上代码执行后,x 的值将是:
```
Bill
```
## 把方法添加到 JavaScript 对象
方法只不过是附加在对象上的函数。
在构造器函数内部定义对象的方法:
```
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
}
```
changeName() 函数 name 的值赋给 person 的 lastname 属性。
现在您可以试一下:
```
myMother.changeName("Ballmer");
```
## JavaScript 类
JavaScript 是面向对象的语言,但 JavaScript 不使用类。
在 JavaScript 中,不会创建类,也不会通过类来创建对象(就像在其他面向对象的语言中那样)。
JavaScript 基于 prototype,而不是基于类的。
## JavaScript for...in 循环
JavaScript for...in 语句循环遍历对象的属性。
### 语法
```
for (对象中的变量)
{
要执行的代码
}
```
注释:for...in 循环中的代码块将针对每个属性执行一次。
### 实例
循环遍历对象的属性:
```
var person={fname:"Bill",lname:"Gates",age:56};
for (x in person)
{
txt=txt + person[x];
}
```
## 课外书
如需更多有关 _JavaScript 对象_的知识,请阅读 JavaScript 高级教程中的相关内容:
[ECMAScript 面向对象技术](/js/pro_js_object_oriented.asp "ECMAScript 面向对象技术")
本节简要介绍了面向对象技术的术语、面向对象语言的要求以及对象的构成。
[ECMAScript 对象应用](/js/pro_js_object_working_with.asp "ECMAScript 对象应用")
本节讲解了如何声明和实例化对象,如何引用和废除对象,以及绑定的概念。
[ECMAScript 对象类型](/js/pro_js_object_types.asp "ECMAScript 对象类型")
本节介绍了 ECMAScript 的三种类型:本地对象、内置对象和宿主对象,并提供了指向相关参考手册的链接。
[ECMAScript 对象作用域](/js/pro_js_object_scope.asp "ECMAScript 对象作用域")
本节讲解了 ECMAScript 作用域以及 this 关键字。
[ECMAScript 定义类或对象](/js/pro_js_object_defining.asp "ECMAScript 定义类或对象")
本节详细讲解了创建 ECMAScript 对象或类的各种方式。
[ECMAScript 修改对象](/js/pro_js_object_modifying.asp "ECMAScript 修改对象")
本节讲解了如何通过创建新方法或重定义已有方法来修改对象。
- JavaScript 基础
- JavaScript 简介
- JavaScript 使用
- JavaScript 输出
- JavaScript 语句
- JavaScript 注释
- JavaScript 变量
- JavaScript 数据类型
- JavaScript 对象
- JavaScript 函数
- JavaScript 运算符
- JavaScript 比较和逻辑运算符
- JavaScript If...Else 语句
- JavaScript Switch 语句
- JavaScript For 循环
- JavaScript While 循环
- JavaScript Break 和 Continue 语句
- JavaScript 错误 - Throw、Try 和 Catch
- JavaScript 表单验证
- JavaScript 保留关键字
- JavaScript JSON
- javascript:void(0) 含义
- JavaScript 高级
- JavaScript 对象
- JavaScript Number 对象
- JavaScript 字符串(String)对象
- JavaScript Date(日期)对象
- JavaScript Array(数组)对象
- JavaScript Boolean(逻辑)对象
- JavaScript Math(算数)对象
- JavaScript RegExp 对象
- JavaScript BOM
- JavaScript Window - 浏览器对象模型
- JavaScript Window Screen
- JavaScript Window Location
- JavaScript Window History
- JavaScript Window Navigator
- JavaScript 消息框
- JavaScript 计时
- JavaScript Cookies
- HTML DOM
- HTML DOM 简介
- HTML DOM 节点
- HTML DOM 方法
- HTML DOM 属性
- HTML DOM 访问
- HTML DOM - 修改
- HTML DOM - 修改 HTML 内容
- HTML DOM - 元素
- HTML DOM - 事件
- HTML DOM - 导航
- JavaScript HTML DOM EventListener
- AJAX 教程
- AJAX 简介
- AJAX 实例
- AJAX - 创建 XMLHttpRequest 对象
- AJAX - 向服务器发送请求
- AJAX - 服务器响应
- AJAX - onreadystatechange 事件
- AJAX ASP/PHP 请求实例
- AJAX 数据库实例
- AJAX XML 实例
- jQuery 基础
- jQuery 简介
- jQuery 安装
- jQuery 语法
- jQuery 选择器
- jQuery 事件
- jQuery 效果
- jQuery 效果 - 隐藏和显示
- jQuery 效果 - 淡入淡出
- jQuery 效果 - 滑动
- jQuery 效果 - 动画
- jQuery 停止动画
- jQuery Callback 函数
- jQuery - Chaining
- jQuery HTML
- jQuery - 获得内容和属性
- jQuery - 设置内容和属性
- jQuery - 添加元素
- jQuery - 删除元素
- jQuery - 获取并设置 CSS 类
- jQuery - css() 方法
- jQuery - 尺寸
- jQuery 遍历
- jQuery 遍历
- jQuery 遍历 - 祖先
- jQuery 遍历 - 后代
- jQuery 遍历 - 同胞
- jQuery 遍历 - 过滤
- jQuery - AJAX
- jQuery - AJAX 简介
- jQuery - AJAX load() 方法
- jQuery - AJAX get() 和 post() 方法
- jQuery 杂项
- jQuery - noConflict() 方法
- JavaScript 高级教程
- JavaScript 的历史
- JavaScript 实现
- ECMAScript 基础
- ECMAScript 语法
- ECMAScript 变量
- ECMAScript 关键字
- ECMAScript 保留字
- ECMAScript 原始值和引用值
- ECMAScript 原始类型
- ECMAScript 类型转换
- ECMAScript 引用类型
- ECMAScript 运算符
- ECMAScript 一元运算符
- ECMAScript 位运算符
- ECMAScript Boolean 运算符
- ECMAScript 乘性运算符
- ECMAScript 加性运算符
- ECMAScript 关系运算符
- ECMAScript 等性运算符
- ECMAScript 条件运算符
- ECMAScript 赋值运算符
- ECMAScript 逗号运算符
- ECMAScript 语句
- ECMAScript if 语句
- ECMAScript 迭代语句
- ECMAScript 标签语句
- ECMAScript break 和 continue 语句
- ECMAScript with 语句
- ECMAScript switch 语句
- ECMAScript 函数
- ECMAScript 函数概述
- ECMAScript arguments 对象
- ECMAScript Function 对象(类)
- ECMAScript 闭包(closure)
- ECMAScript 对象
- ECMAScript 面向对象技术
- ECMAScript 对象应用
- ECMAScript 对象类型
- ECMAScript 对象作用域
- ECMAScript 定义类或对象
- ECMAScript 修改对象
- ECMAScript 继承
- ECMAScript 继承机制实例
- ECMAScript 继承机制实现
- Google 地图API
- Google 地图API Key
- Google Maps 基础
- Google 地图叠加层
- Google 地图事件
- Google 地图控件集
- Google 地图类型
- Google 地图 API 参考手册
- 地图 API Map() 构造器
- 免责声明