js面向对象编程笔记

- 对象
  - 属性
  - 方法
  - js对象基于构造函数和原型链
- 构造函数
  - js使用构造函数来当做对象的模板,即java中的类
  - 构造函数时对象首字母大写为了区别其他函数
  - 如果在构造函数内有return关键字,如果return后是一个对象,那么就会返回这个对象而不是新构造的this对象
  - 构造函数特点
    - 函数内部使用了this关键字,代表了所要生成的对象实例
    - 生成对象的时候必须使用new命令
    - 执行构造函数时
    - 如果不加new,那么生成的变量变成undefined
  - 如何在开发人员忘记使用new时仍然能够正常执行构造函数
    1.使用严格模式 'use strict',在不适用new时会提示错误
    2.在构造函数 用if this instanceof class判断,这里的class是构造函数,意思是判断this是不是构造函数生成的对象
    3.在构造函数中用new.target,如果当前构造函数使用了new方法,那么new.target就会指向构造函数,
     如果没有使用new,那么就会抛出一个错误
- new 关键字
  - 作用就是执行构造函数,返回一个实例对象
  - new命令执行的时候,构造函数内部的this就代表了新生成的实例对象
  - new命令本身就可以执行构造函数,所以后面的构造函数可以带括号,也可以不带括号
  - new原理
    - 1.创建 创建一个空对象
    - 2.指向 将这个空对象的原型指向构造函数的prototype属性
    - 3.赋值 将空对象赋值给函数内部的this关键字
    - 4.开始执行 执行构造函数内部代码
  - new总是返回一个对象,要么是实例对象,要么是return语句指定的对象
- this 总是返回一个对象
  - 是属性或者方法当前所在的对象
  - 因为对象的属性是可以赋给另一个对象,所以属性所在的当前对象是可变的,即this的指向是可变的
  - this设计目的
    - 在函数体内部明确函数当前环境
  - 使用场合
    - 全局环境 全局环境使用this,它指的就是顶层对象window
    - 构造函数 构造函数中的this指的是实例对象
    - 对象方法里包含this,this的指向就是方法运行时所在对象
    - 在事件中,this表示接收事件的元素
  - 注意事项
    - 避免多层使用this this的指向是不确定的
    - 避免数组处理方法中的this
    - 避免回调函数中的this
  - 绑定this 的方法
- 通过模板创建对象的两种方法
  - 通过构造函数
  - 通过Object.create() b = Object.create(a) 以a为模板创建对象b
 
tips:
1. this instanceof class 判断是不是该class的实例
2.如果给普通函数前面加new,那么会返回一个空对象
3.js中一切皆对象,环境,函数,等都是对象
4.js中每个函数就是一个对象,函数对象都有一个子对象prototype对象,类是以函数的形式来定义的,prototype表示该函数的原型
 
问题:
1.prototype是什么,和this有什么关系
2.全局变量是顶层对象的属性么
 
 
posted @ 2019-04-17 00:23  大白驴🤣  阅读(77)  评论(0编辑  收藏  举报