AI智能
改变未来

JS高级语法基础(一)

文章目录

  • 写在前面
  • 面向对象
  • ES6中的类和对象
  • 创建类和对象
  • 类的继承
  • 构造函数
  • new实例化过程
  • 原型对象与原型
    • 构造函数、原型对象与实例对象三者之间的关系
    • 原型链
    • 拓展内置对象

    写在前面

    由于我是将笔记写在笔记本上,然后手打搬运过来,所以内容非常凌乱,可能只有我自己看得懂,所以各位见谅了。

    面向对象

    在编程中,我们拥有两种编程方式,一种是面向过程(OOP),一种是面向对象(OOP)。面向对象主要有三种特点,即:封装、继承与多态。

    ES6中的类和对象

    类:抽象;
    对象:具体。
    注意:
    1、先有类,后有对象;
    2、类里面共有的属性和方法必须加this使用;
    3、类里面的this指向,谁调用指向谁,使用时也可以被this放进一个变量里

    创建类和对象

    class 类名{//类名习惯性首字母大写constuctor(参数){this.变量 = 参数;//constuctor里面的this指向创建的实例对象this.方法}方法名(参数){代码块;}};new 类名();//创建对象

    类的继承

    class 父类{参数};class 子类 extends 父类{constuctor(参数){super(参数);//调用父类的构造函数,并且必须在this之前调用this.变量 = 参数;//ES6中没有变量提升,所以要加this实例化对象}

    构造函数

    ES6——>ECMAScript6.0;

    三种方法创建对象:

    var obj1 = new Obj();//通过new实例化对象var obj2 = {};//通过字面量方式创建function Obj(参数){//类名首字母大写codeblock;};var obj3 = new Obj();//通过构造函数的方式创建对象,但必须与new连用

    new实例化过程

    1、创建空对象;
    2、让this指向这个对象;
    3、给新对象添加属性和方法;
    4、返回这个对象。

    实例成员:函数内部通过this添加的,只能通过实例对象来访问;
    静态成员:构造函数本身添加的成员,只能通过构造函数来访问。

    构造函数好用,但存在内存浪费的问题,因为内部构造函数会开辟空间。

    原型对象与原型

    原型对象:prototype——>作用:共享方法。

    把不变的方法放在原型对象中,所有的实例对象都可以共享这些方法。

    一般,把公共属性放到构造函数的内部,公共方法放到原型对象中。

    实例对象会自动添加__ptoto__属性,指向原型对象,它是一个非标准的内部属性,给查找机制提供一个查找方向。

    首先查找自身,没有在查找原型对象。

    原型对象中的constructor构造函数会指回构造函数本身。

    构造函数、原型对象与实例对象三者之间的关系

    构造函数——>.prototype——>原型对象;
    原型对象——>.constuctor——>构造函数;
    构造函数——>new——>实例对象;
    实例对象——>.proto.constuctor——>构造函数;
    实例对象——>.proto——>原型对象

    原型链

    构造函数的原型对象的__proto__原型指向Object的原型对象,Object的原型对象的__proto__原型指向null

    JS的成员查找机制:按照原型链一层一层查找,并且遵守就近原则。

    在构造函数和原型对象中的this都是指向实例对象

    拓展内置对象

    给数组对象Array添加各种方法,然后数组就可以直接调用,但不能通过添加对象的方法拓展内置对象。

    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » JS高级语法基础(一)