这是我参与更文挑战的第25天,活动详情查看: 更文挑战
1, 对象
对象属于一种复合数据类型,在对象中够可以保存多个不同数据类型的属性
1, 内建对象
在任何的ES实现中都可以使用,比如: Math, String, Number, Function, Object
2, 宿主对象
有JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象,比如:DOM,BOM
3,自定义对象
有开发人员自己创建的对象
2, 对象的基本操作
1, 前提
JS中的变量都是保存到栈内存中,基本数据类型的值直接在栈内存中存储,而且值与值之间是独立存在,修改一个变量不会影响其他变量
2,栈,堆
栈内存保存的是:基本数据类型
堆内存保存的是对象
两个对象比较,比较的是内存地址。
3, 创建对象
(1) new 创建
var obj = new Object()
(2) 对象字面量创建
var obj = {
name:'zlm'
}
注意:使用对象字面量添加的属性名可以加引号,也可以不加引号。 建议不加。
如果要使用一些特殊的名字,则必须加引号
3, 函数
函数也是一个对象,函数中可以封装一些功能,在需要时执行。
(1) 使用函数表达式创建一个函数
var fun = function(a,b,c) {
console.log('a')
}
函数表达式其实就是把一个匿名函数赋值给一个变量
(2)使用函数声明创建一个函数
function fun(a,b,c) {
console.log('a')
}
(3) 构造方式创建一个函数
var fun = new Function()
对比:建议选择第二种方式
4, 立即执行函数
目的:只调用一次,立刻调用
(function(a,b){
console.log("我是一个匿名函数")
})(123,245)
5, 枚举对象属性
使用 for ... in 语句
for (var n in obj) {
console.log()
}
注意:循环的次数是对象的属性个数
6, 作用域
指一个变量的使用范围
(1) 全局作用域
直接编写在script标签中的JS代码,都在全局作用域
- 全局作用域在页面打开是创建,页面关闭是销毁
- 全局作用域中有一个全局对象window, 我们可以直接使用,它代表一个浏览器窗口。
- 在全局作用域中,创建的变量都会作为window对象的属性保存
- 在全局作用域中,创建的函数也都会作为window对象的属性保存
(2) 函数作用域,又称局部作用域
(3) var声明的变量,会有一个变量提升的过程,但是不会赋值,当执行到的时候,在赋值。
函数声明有两种情况
- 使用函数声明形式创建的函数,它会在所有代码执行之前就被创建,有一个函数提升的过程
- 使用函数表达式创建的函数,不会被声明提前,所以不会被创建
总结:在全局作用域中的变量都是全局变量,在页面的任意位置都可以被访问到。