JavaScript对象及其属性、方法

1.对象的属性和方法
JavaScript中,对象是王。如果您理解了对象,就理解了JavaScript。布尔是对象(如果用new关键词定义)、数字是对象(如果用new关键词定义)、字符串是对象(如果用new关键词定义);日期、算术、正则表达式、数组、函数、对象永远都是对象。
所有JavaScript值,除了原始值,都是对象。
(1)JavaScript原始值
原始值指的是没有属性或方法的值。原始数据类型指的是拥有原始值的数据。JavaScript定义了5种原始数据类型:string、number、boolean、null、undefined。原始值是一成不变的(它们是硬编码的,因此不能改变)。
(2)对象是包含变量的变量
JavaScript变量能够包含单个的值:var person = "Bill Gates";
对象也是变量。但是对象能够包含很多值。值按照名称 : 值对的形式编写(名称和值以冒号分隔)。
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
JavaScript 对象是命名值的集合。
(3)对象属性
属性是任何JavaScript对象最重要的部,指的是与JavaScript对象相关的值。JavaScript对象是无序属性的集合。属性通常可以被修改、添加和删除,但是某些属性是只读的。
 
①访问JavaScript属性
A.访问对象属性的语法是:objectName.property、或者:objectName["property"]、或者:objectName[expression],表达式必须计算为属性名。
B.JavaScript for...in 循环
JavaScript for...in语句遍历对象的属性。
语法
for (variable in object) {
    要执行的代码
}
for...in 循环中的代码块会为每个属性执行一次。
实例
var person = {fname:"Bill", lname:"Gates", age:62}; 
 
for (x in person) {
    txt += person[x];
}
 
②添加新属性
可以通过简单的赋值,向已存在的对象添加新属性。person.nationality = "English";
不能使用预留词作为属性名(或方法名)。请使用 JavaScript 命名规则。
 
③删除属性
delete关键词从对象中删除属性:
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
delete person.age;  
delete关键词会同时删除属性的值和属性本身。
删除完成后,属性在被添加回来之前是无法使用的。
delete 操作符被设计用于对象属性。它对变量或函数没有影响。
delete 操作符不应被用于预定义的 JavaScript 对象属性。这样做会使应用程序崩溃。
 
属性值
所有属性都有名称。此外它们还有值。
值是属性的特性之一。
其他特性包括:可列举、可配置、可写。
这些特性定义了属性被访问的方式(是可读的还是可写的?)
在JavaScript中,所有属性都是可读的,但是只有值是可修改的(只有当属性为可写时)。
 
原型属性
JavaScript对象继承了它们的原型的属性。
delete关键词不会删除被继承的属性,但是如果您删除了某个原型属性,则将影响到所有从原型继承的对象。
 
(4)对象方法
方法是可以在对象上执行的动作。对象属性可以是原始值、其他对象以及函数。对象方法是包含函数定义的对象属性。方法是存储为对象属性的函数。
在JavaScript 中,被称为this的事物,指的是拥有该JavaScript代码的对象。this的值,在函数中使用时,是“拥有”该函数的对象。注意this并非变量。它是关键词。您无法改变this的值。
 
①访问对象方法
创建对象方法:methodName : function() { 代码行 }
objectName.methodName()
name = person.fullName();
 
②使用内建方法
此例使用String对象的toUpperCase()方法,把文本转换为大写:
var message = "Hello world!";
var x = message.toUpperCase();
x的值,在以上代码执行后将是:
 
③添加新的方法
向对象添加方法是在构造器函数内部完成的:
function person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName;  
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.changeName = function (name) {
        this.lastName = name;
    };
}
changeName()函数name的值赋给了person的lastName属性。
JavaScript对象是被称为属性和方法的命名值的容器。
(5)JavaScript对象是易变的
对象是易变的:它们通过引用来寻址,而非值。JavaScript变量不是易变的。只有JavaScript 对象如此。
 
2.创建JavaScript对象
通过JavaScript,您能够定义和创建自己的对象。有不同的方法来创建对象:定义和创建单个对象,使用对象文字。定义和创建单个对象,通过关键词new。定义对象构造器,然后创建构造类型的对象。在 ECMAScript 5 中,也可以通过函数 Object.create() 来创建对象。
(1)使用对象字面量
使用对象文字,可以在一条语句中定义和创建对象。对象文字指的是花括号 {} 中的名称:值对(比如 age:62)。
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
 
空格和折行不重要。对象定义可横跨多行:
var person = {
    firstName:"Bill",
    lastName:"Gates",
    age:62,
    eyeColor:"blue"
};
(2)使用 JavaScript 关键词new
下面的例子创建了带有四个属性的新的JavaScript 对象:
var person = new Object();
person.firstName = "Bill";
person.lastName = "Gates";
person.age = 50;
person.eyeColor = "blue"; 
上面的两个例子结果是一样的。无需使用new Object()。出于简易性、可读性和执行速度的考虑,建议使用第一种创建方法(对象文字方法)。