序
昨天刚过的情人节,相信很多人都和对象出门吃饭了,但是你真的了解对象吗,快来自我校验一番把,看完之后真正的理解对象。
什么是对象
对象是用来存储键值对和更加复杂的实体,我们可以通过使用带有可选 属性列表 的花括号 {…}
来创建对象。一个属性就是一个键值对(“key: value”),其中键(key
)是一个字符串(也叫做属性名),值(value
)可以是任何值。
我们可以吧对象想象成图书馆, 每一本书都有自己的号码 (key),这样图书管理员就可以通过号码(也就是 key)来找到对应的图书做出对应的操作。
如何创建对象
- 构造函数
let people = new Object(); // “构造函数” 的语法
- 字面量
let user = {}; // “字面量” 的语法
我们可以在创建对象的时候,立即将一些属性以键值对的形式放到 {} 中.
let people = {
name: 'coolFish',
age: '25'
};
我们可以看到我们字面量的形式创建了一个对象,对象有两个属性,都是键值对的形式。 属性的键位于冒号左边,属性的值在冒号的右边。 在 people 对象中,有两个属性
- 第一个键是 name,值是 coolFish。
- 第二个键是 age,值是25。
生成的people可以想象成一个假人,他有名字和年龄两个属性。我们可以随时添加,删除和读取他的属性,通过点符号可以访问对象的属性值。
// 读取文件的属性:
alert( people.name ); // coolFish
alert( people.age ); // 25
属性的值可以是任意类型,让我们加个布尔类型
people.study = true;
我们可以用 delete
操作符移除属性
delete people.age;//再访问 age ,就是 undefined
const 声明的对象可否被修改?
const people = {
name: "coolFish"
};
user.name = "Pete"; // (*)
alert(user.name); // Pete
小结:按理来说常量是不可变得,应该报错,但实际没有,这是因为 const 声明仅固定了 people 的值,而不是值里面的内容。当我们尝试将 people 作为一个整体进行赋值的时候,const 会报错。
方括号取值
当面对多词属性,点符号取值就不可取了,这时候可以使用方括号取值。
let user = {};
//设置
user["likes birds"] = true;
//读取
//报错
user.likes birds = true
//true
alert(user["likes birds"]);
//跟 user["likes birds"] = true; 一样
let key = "likes birds";
user[key] = true;
//删除
delete user["likes birds"];
计算属性
当创建一个对象时,我们可以在对象字面量中使用方括号。这叫做 计算属性。
let fruit = prompt("Which fruit to buy?", "banana");
let bag = {
[fruit]: 25, // 属性名是从 fruit 变量中得到的
};
alert( bag.banana ); // 25
我们可以在方括号中使用更复杂的表达式
let fruit = 'apple';
let bag = {
[fruit + 'Computers']: 5 // bag.appleComputers = 5
};
大部分时间里,当属性名是已知且简单的时候,就使用点符号。如果我们需要一些更复杂的内容,那么就用方括号。
属性值简写
实际开发中,我们会把已存在的变量作为属性名。
function makeUser(name, age) {
return {
name: name,
age: age,
// ……其他的属性
};
}
let user = makeUser("coolFish", 25);
alert(user.name); // coolFish
属性存在性测试,"in" 操作符
let user = { name: "John", age: 30 };
alert( "age" in user ); // true,user.age 存在
alert( "blabla" in user ); // false,user.blabla 不存在。
我们用 in 可以很简单的判断该对象是否拥有该属性,in
的左边是属性名,一般是带引号的字符串,如果没有引号,意味着是一个变量。
for...in 循环
let user = {
name: "John",
age: 30,
isAdmin: true
};
// 对此对象属性中的每个键执行的代码
for (let key in user) {
// keys
alert( key ); // name, age, isAdmin
// 属性键的值
alert( user[key] ); // John, 30, true
}
使用这种操作,我们可以轻松的讲对象里的属性的键值取出来。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!