整理一下js面向对象中的封装和继承。
1.封装
js中封装有很多种实现方式,这里列出常用的几种。1.1 原始模式生成对象
直接将我们的成员写入对象中,用函数返回。 缺点:很难看出是一个模式出来的实例。代码:
1.2 生成构造模式对象
js帮我们提供了一个使用构造函数生成对象的模式,¨所谓“构造函数”,其实就是一个普通函数,但是内部使用了this变量。当使用new关键字对构造函数生成实例后,this变量则会绑定在实例对象上。
直接上代码:
不难看出js的构造函数生成对象和C#用class生成对象如出一辙,都是用模板定义对象成员通过new关键字实例化。
ok,到这儿基本的对象有了。 那么现在我们需要一个所有对象都公用的方法,而且只让这个方法创建一次。(不随着对象new而重复创建) 怎么办呢? 大家都知道在C#中我们可以用静态成员。那么在js中怎么做呢?
1.3 Prototype模式
在js中,每一个构造函数都有一个prototype属性,这个对象的所有属性和方法,都会被构造函数的实例继承。那么我们直接给prototype添加成员就相当于在C#中声明静态成员了。
代码:
封装就讲到这儿了,下面我们来看看js中继承又是如何实现的?
2.继承
2.1 构造函数绑定
在子函数中直接调用 call或apply方法,将父对象的构造函数绑定在子对象上。
<div class="codetitle"><a style="CURSOR: pointer" data="6410" class="copybut" id="copybut6410" onclick="doCopy('code6410')"> 代码如下: