你不知道的js-混合对象-类

1、类是一种设计模式,许多语言提供了对于面向类软件设计的原生语法,js中也有类似的语法,但是和其他语言中的类完全不同。

2、类意味着复制

3、js并不会像类那样自动创建对象的副本。

4、在继承或者实例化时,js的对象机制并不会自动执行复制行为,简单来说,js中只有对象,并不存在可以被实例化的类。一个对象并不会被复制到其他对象,他们会被关联起来。

5、混入模式(无论显事还是隐式)可以用来模拟类的复制行为,但是通常会产生丑陋并且脆弱的语法,比如显式伪多态,这会让代码更加难懂并且难以维护。

显式混入其实没有办法模拟类的复制行为,因为对象只能复制引用,无法复制被引用的对象或者函数本身。如果你修改了共享的函数对象,比如添加了一个属性,父类和子类都会受到影响。

6、总的来说,在js中模拟类是得不偿失的,虽然能解决当前的问题,但会有更多隐患

 

posted @ 2018-01-02 23:49  lu0511  阅读(437)  评论(0编辑  收藏  举报