JS对象/继承

js对象定义的方法:

  方法一:通过var object={}  对象字面量
     (1),可以叫对象直接量来自定义一个对象。对象自面量是一个表达式,这个表达式的每次运算都创建并初始化一个新对象

(2) 还可以换行写,每义定一个属性名和值,用逗号分开,最后一个不加逗号,加了会被忽略,但在ie中会报错,最好不要加

   方法二:通过 var obj = new Object();创建对象 

        1、创建一个空白的Object对象
        2、给创建的对象添加属性和方法

通过object.create来创建对象

 方法三:通过构造函数来创建对象

通过instanceof操作符可以检测一个对象是否由某个指定的构造器函数来创建的对象

注意:
使用的时候可以通过new操作符得到对象。
用构造器创建对象的时候可以接收参数
构造器函数的首首字母最好大写,区别其他的一般函数

js继承:

实现继承的方式一:原型链

实现方法:A原型的实例是B原型的属性

不要忘记原型链中默认存在Object

子类添加方法或重写超类方法要放在替换原型语句之后

通过原型链实现继承后,不能使用对象字面量的方式创建方法和属性,因为会重写原型链

通过原型链实现继承后,超类的引用类型属性会被所有实例共享

实现继承的方式二:借用构造函数

实现方法:在子类的构造函数内调用超类构造函数,即使用call()或者apply(),使得超类构造函数作用域发生改变

可以给构造函数传递参数,但无法进行函数复用

实现继承的方式三:组合继承

实现方法:使用原型链实现对原型属性和方法的继承,借用构造函数实现对实例属性的继承

隐患:调用两次父类构造函数(1call()方法,2new SuperType() )

实现继承的方式四:原型式继承

以一个对象为基础,生成新对象,再对新对象进行修改

超类引用类型的属性依然是共享的

实现继承的方式五:寄生式继承

创建一个仅用来实现继承过程的函数,并在函数内部扩展对象,再将对象返回

此时父类的引用类型属性依然是被所有实例共享

实现继承的方式六:寄生组合式继承

通过借用构造函数来继承属性,通过原型链混成来继承方法

减少了一次父类构造函数的执行,父类引用类型的属性不被共享

 

posted @ 2021-11-17 20:34  牵着宇宙来遛弯  阅读(87)  评论(0)    收藏  举报