JavaScript中的对象

JavaScript中的对象属于是引用类型的数据,是一种数据类型

对象:是一组属性和方法的集合

一部手机:属性有颜色、品牌、屏幕尺寸、内存大小、CPU,方法有播放视频、听音乐、办公、聊天...

一辆汽车:属性有颜色、空间大小、品牌、燃料类型,方法有代步、拉货...

万物皆对象

1.JS中的对象

自定义对象:用户创建的对象

内置(ES)对象:JS标准规范中提供的对象

宿主对象:运行在不同的环境下,根据运行环境划分

2.自定义对象

(1) 对象字面量
var phone = { 属性名1: 属性值1, '属性名2': 属性值2,... }

属性名的引号可以省略,如果含有特殊字符必须添加引号。

练习:创建一个员工对象,包含的属性有编号、姓名、性别、生日、所属部门编号

var emp = {
    eid: 1,
    ename: 'Yu',
    sex: '女',
    birthday: '1991年5月4日',
    'dept-id': 30
}

练习:创建一个商品对象,包含的属性有编号、标题、封面图、价格、库存量

var product = {
    pid: 1,
    title: '戴尔DELL灵越游匣15PR',
    img: 'img/dell.jpg',
    price: 5999,
    stock: 800
}
(2)内置构造函数

通过new关键字调用的函数就是构造函数

var car = new Object()
// 需要单独添加属性
car.color = '黑色'

3.访问属性

对象.属性名

对象['属性名']

如果属性名不存在,获取的属性值为undefined

练习:创建一本图书对象,包含的属性有编号、书名、作者、价格;修改图书的价格,添加图书的出版社、出版日期,打印输出图书的作者。

var book = {
    id: 9787115335500,
    title: '深入浅出Node.js',
    author: '朴灵',
    price: 51.4
}
// 修改价格
book.price = 48.5
// 添加属性
book.publish = '人民邮电出版社'
book['ptime'] = '2013-12-1'
​
console.log(book.author)
console.log(book)

4.遍历(枚举)属性

采用循环的方式,依次访问对象中的每个属性

for(var k in 对象) {
    k   每次访问到的属性名
    对象[k]   属性名对应的属性值
}

练习:创建一个成绩对象,包含多门成绩,遍历属性访问到每个成绩,计算出总分和平均分。

var score = {
    chinese: 84,
    math: 92,
    english: 78,
    history: 90
}
// 遍历属性
// 声明变量,用于保存总分
var sum = 0
// 声明变量,用于保存数量
var count = 0
for(var k in score) {
    // score[k]  每一个分数
    // console.log(k, score[k])
    // 把每一个分数加到sum
    sum += score[k]
    // 数量加1
    count++
}
console.log(sum, count, sum/count)

5.检测属性是否存在

对象.属性名 === undefined  // true -> 不存在  false -> 存在
对象.hasOwnProperty('属性名')  // true -> 存在  false -> 不存在
'属性名' in 对象  // true -> 存在  false -> 不存在

练习:创建一个商品对象,包含的属性有编号、标题、价格,如果库存量不存在,添加库存量属性,设置属性值为100;如果价格属性存在的话,对价打8折;最后打印对象

var product = {
    pid: 2,
    title: '小米13',
    price: 4200
}
// 判断属性不存在
// product.stock === undefined
// !product.hasOwnProperty('stock')
if(!('stock' in product)) {
    product.stock = 100
}
// 判断属性存在
if(product.hasOwnProperty('price')) {
    // 打8折
    product.price *= 0.8
}
​
console.log(product)

你可能感兴趣的:(javascript,开发语言,ecmascript)