继承

javascript继承的实现,主要有几个点需要注意:

  • 子类中call父类,达到继承父类中的所有属性和方法
  • 创建一个立即执行的闭包,闭包中包含:
    • 创建一个空对象
    • 将父类的prototype赋值给空对象的prototype
    • 子类的prototype等于new一个空对象,实现了子类继承父类的prototype

 

实现代码如下:

 

 1 (function () {
 2 
 3     function SuperType() {
 4         this.superName = 'Super Cheery'
 5 
 6         this.superSayHi = function () {
 7             console.log('hi')
 8         }
 9     }
10 
11     SuperType.prototype.superPrototypeSayHi = function () {
12         console.log('hi')
13     }
14 
15     function SubType() {
16         // 重点1
17         SuperType.call(this)
18         this.subName = 'Sub Cheery'
19 
20         this.subSayHi = function () {
21             console.log('hi')
22         }
23     }
24 
25     SubType.prototype.subPrototypeSayHi = function () {
26         console.log('hi')
27     }
28 
29     // 节省内存和变量污染
30     !function () {
31         // 重点2
32         var Super = function () { }
33         Super.prototype = SuperType.prototype
34         SubType.prototype = new Super
35 
36         console.log(new SubType)
37     }()
38 
39 })();

 

posted @ 2017-09-10 15:24  Ch11ry  阅读(119)  评论(0编辑  收藏  举报