JS对象的创建和使用
我们可以将对象看作是一个属性的无序,每个属性都有一个名称和值(键/值对)。通过《JS数据类型》一节我们知道,数组是值的,每个值都有一个数字索引(从零开始,依次递增)。对象类似与数组,不同的是对象中的索引是自定义的,例如 name(姓名)、age(年龄)、gender(性别)等。
JS 创建对象
您可以使用花括号 { } 来创建对象,{ } 中用来定义对象中的属性。属性是一个个键:值 对的组,其中键(属性名称)始终是字符串类型的,而值(属性值)则可以是任意类型,例如字符串、数组、函数或其它对象等。不同的属性之间使用逗号进行分隔。示例代码如下:var person = {
name: "Peter",
age: 28,
gender: "Male",
displayName: function() {
document.write(this.name);
}
};
提示:在对象中定义的函数通常被称为方法。
上面示例中创建了一个名为 person 的对象,该对象中包含三个属性 name、age、gender 和一个方法 displayName()。displayName() 方法中的 this.name 表示访问当前对象中的 name 属性,会被 JavaScript 解析为 person.name。在定义对象时,属性名称虽然是字符串类型,但通常不需要使用引号来定义,但是以下三种情况则需要为属性名添加引号:
属性名为 JavaScript 中的保留字;
属性名中包含空格或特殊字符(除字母、数字、_ 和 $ 以外的任何字符);
属性名以数字开头。
示例代码如下:
var person = {
"first name": "Peter",
"current age": 28,
gender: "Male"
};
访问对象的属性
要访问或获取属性的值,您可以使用 对象名.属性名 或者 对象名["属性名"] 的形式,如下例所示:在访问对象属性时,使用var person = {
name: "Peter",
age: 28,
gender: "Male",
displayName: function() {
document.write(this.name);
}
}
document.write("姓名:" + person.name + "<br>"); // 输出:姓名:Peter
document.write("年龄:" + person["age"]); // 输出:年龄:28
对象名.属性名 的形式更易于代码的编写,但并不是所有情况下都可以使用。如果属性名中包含空格或者特殊字符,则不能使用 对象名.属性名 的形式来访问对象属性,必须使用 对象名["属性名"] 的形式才行,如下例所示:使用var person = {
"first name": "Peter",
"current age": 28,
gender: "Male"
};
document.write(person["first name"]); // 输出:Peter
document.write(person.current age); // 报错:missing ) after argument list
对象名["属性名"] 的形式访问对象属性相对比较灵活,您除了可以直接通过属性名访问属性外,还可以将属性名称赋值给变量,然后再通过这个变量来访问属性的值,如下所示:var person = {
name: "Peter",
age: 28,
gender: "Male"
};
var key = "age";
document.write(person[key]); // 输出:28
设置修改对象的属性
使用 对象名.属性名 或者 对象名["属性名"] 的形式除了可以获取对象的属性值外,也可以用来设置或修改对象的属性值,如下例所示:输出结果如下所示:var person = {
name: "Peter",
age: 28,
gender: "Male"
};
person.phone = "";
person.age = 20;
person["name"] = "Peter Parker";
for (var key in person) {
document.write(key + ":" + person[key] + "<br>")
}
name:Peter Parker
age:20
gender:Male
phone:
JS 删除对象的属性
您可以使用 delete 语句来删除对象中的属性,如下例所示:输出结果如下所示:var person = {
name: "Peter",
age: 28,
gender: "Male",
phone: ""
};
delete person.gender;
delete person["phone"];
for (var key in person) {
document.write(key + ":" + person[key] + "<br>")
}
name:Peter
age:28
提示:delete 语句是从对象中删除指定属性的方式,而将属性值设置为 undefined 或 null 仅会更改属性的值,并不会将其从对象中删除。
JS 调用对象的方法
您可以像访问对象中属性那样来调用对象中的方法,如下例所示:var person = {
name: "Peter",
age: 28,
gender: "Male",
displayName: function() {
document.write(this.name);
}
};
person.displayName(); // 输出:Peter
person["displayName"](); // 输出:Peter
- 随机文章
- 风儿(风儿轻轻的吹)
- 饿了么红包怎么用(饿了么红包怎么用微信支付)
- 儿童教育文章(儿童教育)
- 广州4a广告公司(广州4a广告公司创意总监年薪)
- 抖音卡(抖音卡顿怎么解决)
- xboxones(xboxone手柄怎么配对主机)
- 兵马俑(兵马俑介绍和历史背景)
- 陈武简历
- 帆船比赛(帆船比赛视频)
- 韩国媳妇和小雪(韩国媳妇和小雪的父亲工资是多少)
- 儋州市第二中学(儋州市第二中学录取分数线)
- 鬼泣5攻略(鬼泣5攻略第三关怎么跳)
- 地球日主题(2020年世界地球日主题)
- 和柳亚子(和柳亚子先生于田)
- 冰客(冰客果汁)
- yy魔兽(yy魔兽世界)
- 国外成人游戏(国外成人游戏注册需要visa信用卡)
- 充值卡代理(充值卡代理加盟)
- 拆奶罩
- 郭妮小说(恶魔的法则郭妮小说)
- 杭同(杭同培训中心怎么样)
- 蝙蝠给人类的一封信(蝙蝠给人类的一封信)
- 大松电饭煲(美的大松电饭煲)
- 服饰加盟(服饰加盟店招商)
- 疯狂填字(疯狂填字5)
- 观音普门品(观音普门品念诵全文)
- 河北省大运会(河北省大运会时间)
- 哈利波特官网(哈利波特官网在哪里)
- 骇客神条(骇客神条怎么辨别真假)
- 杜星霖(杜星霖图片)
