javaScript 高级 含 ES6

2020年7月9日 作者 张舫

在es6中新增概念,可以用class关键字声明一个类,之后以这个类来实例化对象.

  • 类 抽象了 对象 的公共部分,它泛指某一大类
  • 对象特制某一个,通过类实例化一个具体的对象
  • 先定义类在实例化
  • 类里面的属性和方法必须加上this使用
  • constructor 里面的this指向实例对象,方法里面的对象指向这个方法的调用者

创建类,new一个对象

继承类

简单继承

继承时调用父类构造方法

继承时调用父类普通方法

 

面向对象实例(tab栏切换)

js代码 使用demo https://cloud.zfajax.com/index.php?share/file&user=102&sid=9EawRHC6

构造函数 静态成员与实例成员

构造函数原型对象(prototype)

  • 构造函数虽然好,但是存在内存浪费的问题
  • 构造函数通过该原型分配的函数是所有对象共享的
  • JavaScript规定,每一个构造函数都有prototype属性,指向另一个对象,prototype就是一个对象,这个对象的所有属性和方法,都会被被构造函数所拥有
  • 我们可以把那些不变的方法直接定义在prototype对象上,
  • 原型是什么?  一个对象,我我们也成为prototype为原型对象(我称作构造原型)
  • 原型的所用是什么?  共享方法
  • 可以通过原型对象,对原来的内置对象进行自定义扩展,比如给Array添加sun方法
  • 在构造函数中,里面的this指向的是对象实例ldh(刘德华),在原型对象函数里面的this指向的是 实例对象 ldh(刘德华)

prototype简单使用

给Array对象扩展方法sum

对象原型 __proto__

对象都一个__proto__属性,指向构造函数的prototype原型对象(我叫作构造原型),之所以我们对象能使用构造函数prototype原型对象的属性和方法,就是因为对象有__proto__的存在,prototype 等价与 proto 因为指向一样

constructor 构造函数

  • 对象原型 (__proto__) 和 构造函数(prototype) 原型对象里面都有一个constructor属性,constructor我们成为构造函数,因为他指回构函数本身.
  • constructor主要用于记录该对象引用那个构造函数,他可以让原型对象重新指向原来的构造函数(var ldh = new Star(‘刘德华’,18))

 

构造函数  原型  对象 ,三者之间的关系

原型链

继承

es6之前并没有给我们提供extends继承.我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承