最详细的前端入门知识第11章

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.作用域
- 作用域简单来讲就是作用范围
- 在JS中作用域分成两种:全局作用域、函数作用域
- 全局作用域
- 所有直接写在script标签中的代码都在全局作用域中
- 全局作用域在页面加载时创建,在页面关闭时销毁
- 在全局作用域中创建的变量是全局变量,在页面中的任意位置都可以访问
- 全局作用域有一个全局对象window,它代表的是浏览器的窗口
在全局作用域中创建的变量都会作为window对象的属性保存,
在全局作用域中创建的函数都会作为window对象的方法保存

- 函数作用域
- 每调用一次函数就会创建一个新的函数作用域,
函数作用域在函数调用时创建,在函数调用结束时销毁
- 在函数作用域中可以访问全局变量,在全局作用域中无法访问函数作用域中的变量
- 当在函数作用域中使用一个变量时,它会先在自身中寻找,如果找到了则直接使用,
如果没有找到,则继续向上一级作用域中寻找,如果找到了则使用,没找到则继续
直到找到全局作用域了,如果依然没有,则会报错

- 变量的声明提前
- 在全局作用域中或函数作用域中,如果使用var关键字声明了变量,
则变量的声明操作将会在所有的代码执行前进行,但是不会赋值

- 函数的声明提前
- 在全局作用域中或函数作用域中,如果使用函数声明的形式创建函数,
则函数会在所有的代码执行前被创建

2.this
- this是函数中的隐含参数,函数每次调用时都会有一个this被传递进来
- this代表的是函数执行的上下文对象
- 根据函数的调用方式的不同,this的值也不同
1.以函数形式调用时,this是window
2.以方法的形式调用时,this是调用方法的对象
3.以构造函数的形式调用时,this是新创建的那个对象
4.在全局作用域中this是window

3.构造函数constructor
- 构造函数是专门用来创建对象的函数
它本质上就是一个普通的函数,但是调用时需要使用new关键字
- 构造函数的执行流程:
1.创建一个新的对象
2.将新的对象设置函数的this
3.执行函数中的代码
4.将新建的对象作为返回值返回
- 构造函数都是首字母大写
- 一个构造函数也称为一个类
- 通过一个构造函数创建的对象,我们称这个对象是这个构造函数(类)的实例
- 通过相同的构造函数创建的对象,我们称为一类对象
- instanceof运算符
- 可以用来检查一个对象是否是一个类的实例
- 语法:对象 instanceof 构造函数
- 如果该对象时构造函数的实例,则返回true
如果不是,则返回false
- Object是所有对象的祖先,所以任意对象和Object做instanceof时,都会返回t

rue

4.原型(prototype)
- 没有一个函数中都有一个属性prototype,该属性对应这一个原型对象
- 如果函数作为普通函数调用则prototype没有任何作用
- 如果函数作为构造函数调用时,则使用该函数所创建的对象中,
都会有一个隐含的属性__proto__指向该函数的prototype对象
- 默认情况下,所有的通过同一个构造函数所创建的对象,都会拥有相同的原型对象。
- 当我们调用对象中的一个属性或一个方法时,它会现在对象自身中寻找,如果有则直接使用,
如果没有则去对象的原型中寻找(__proto__),如果找到了则使用,
如果没找到则去对象的原型的原型中寻找(__proto__.__proto__),以此类推
直到找到Object的原型,它的原型没有原型,如果依然没有找到,则返回undefined
- 可以将对象中共有的属性和方法,统一保存到原型中,这样只需添加一次即可使所有的对象共有这些属性和方法

5.hasOwnProperty()
- 方法,可以用来检查一个属性是否是对象自身的属性
- 语法:对象.hasOwnProperty("属性名");









相关文档
最新文档