1.检测属性是否存在
对象.属性名 === undefined 存在 -> false 不存在 -> true
对象.hasOwnProperty('属性名') 存在 -> true 不存在 -> false
'属性名' in 对象 存在 -> true 不存在 -> false
练习:创建对象保存一条商品的数据,包含有编号,标题,价格属性,如果价格属性存在,在原来的基础之上打九折,如果产地属性不存在则添加该属性,最后打印对象。
2.对象中的方法
方法对应的是一个函数
var person = { play: function(){ this 指代调用方法的对象 } } person.play(); //调用 |
练习:创建一个圆的对象,包含的属性有半径、圆周率,添加两个方法,分别是计算面积和周长,并将计算的结果返回;最后调用两个方法
3.数据的存储
原始类型,将数据直接存储在栈内存;
引用类型,将数据存储在堆内存中,然后自动生成一个16进制地址,然后将地址保存在栈内存
null:表示空地址,没有指向任何堆内存数据
引用类型的数据如果不被任何的地址所指向就会自动销毁,直接赋值为null,就可以销毁引用类型的数据。
4.数组
就是一组数据的集合
(1)字面量创建数组
[ 元素1, 元素2 ... ]
练习:创建数组,包含一组成绩;创建数组,包含一组商品的标题;
(2)访问数组元素
数组[下标]
下标:自动为每个元素添加的编号,从开始的整数
如果访问不存在的元素,则结果为undefined
练习:创建数组包含有多个国家的名称,修改其中的一个元素,在末尾添加两个元素
(3)数组的长度
数组.length 获取数组元素的数量
在数组末尾添加元素 数组[ 数组.length ] = 值
练习:创建一个空数组,添加若干个汽车的品牌名称
(4)内置构造函数创建数组
new Array(元素1,元素2,...)
new Array(4) 创建数组,初始化长度为4,可以添加更多个元素
练习:创建数组,包含多个城市的名称;
创建数组,初始化长度为5,添加5张图片的名称
(5)数组的分类
索引数组:以0及以上的整数作为下标
关联数组:以字符串作为下标,只能单独的添加元素
关联数组不能使用length属性获取数组的长度
(6)遍历数组元素
依次访问数组中的每个元素
for-in for(var k in 数组){ k 代表下标 数组[k] 下标对应的元素 } |
循环 —— 推荐用法 for(var i=0;i < 数组的长度;i++){ i 代表下标 数组[i] 下标对应的元素 } |
练习:创建数组,包含一组成绩,遍历数组元素,计算出总分和平均分
(7)API
应用程序编程接口:JS中预定义的函数或者对象下的方法
toString() 将数组转为字符串
join('-') 将数组转为字符串,默认用逗号分割元素,可以指定分割符号
concat(arr2,arr3...) 拼接多个数组,arr2,arr3代表要拼接的数组