JavaScript 回顾(二)

106 阅读3分钟

这是我参与更文挑战的第25天,活动详情查看: 更文挑战

1, 对象

对象属于一种复合数据类型,在对象中够可以保存多个不同数据类型的属性

1, 内建对象

在任何的ES实现中都可以使用,比如: Math, String, Number, Function, Object

2, 宿主对象

有JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象,比如:DOM,BOM

3,自定义对象

有开发人员自己创建的对象

2, 对象的基本操作

1, 前提

JS中的变量都是保存到栈内存中,基本数据类型的值直接在栈内存中存储,而且值与值之间是独立存在,修改一个变量不会影响其他变量

2,栈,堆

栈内存保存的是:基本数据类型

堆内存保存的是对象

微信图片_20210825231107.png

两个对象比较,比较的是内存地址。

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声明的变量,会有一个变量提升的过程,但是不会赋值,当执行到的时候,在赋值。

函数声明有两种情况

  • 使用函数声明形式创建的函数,它会在所有代码执行之前就被创建,有一个函数提升的过程
  • 使用函数表达式创建的函数,不会被声明提前,所以不会被创建

总结:在全局作用域中的变量都是全局变量,在页面的任意位置都可以被访问到。