原型式继承是通过一个公用厕所(函数) ,在厕所里创建独立包间(创建构建函数),在这个包间的便器上(原型上)传入不明物体(参数),于是这个物体被现实return到你的眼中,然后他就在使用中不断重复利用。

代码如下:

function wc(ooxx) {
         function Rbq(){};
         Rbq.prototype = ooxx;
         return new Rbq;
};
var shi = {
      one : '很黑',
      two : '很硬',
      three : function() {
             return this.one + this.two + '真香...';
      }
};
var yan = wc(shi);
alert(yan.three());

返回: 很硬很黑真香...
         

我一想,这不就是利用原型传入参数,然后调用吗,这样写不是更绕吗?于是我直接给wc的原型传入shi不就行了?

function Wc() {};
Wc.prototype = shi;

var shi = {
      one : '很黑',
      two : '很硬',
      three : function() {
                return this.one + this.two + '真香...';
      }
};

var yan = new Wc();
alert(yan.three()); 

返回错误!

我一看,写的顺序不对,shi这个变量都没写,就被传入了,是不存在的,会报错,于是我把shi放在了构建函数Wc前面,就没问题了,但是这样也衍生了问题,你不知道你传入的参数是在前面还是在后面,而且,整个不好封装,因为原型和实例都是分开的,而且还不能传参,于是我们又返回到上面了,发现利用函数将原型和实例包起来,然后还可以解决不能传参的问题,这样封装方便,顺序上只要传入时的代码在被传入的变量参数(shi)后面,就行了。

分类: JavaScript 标签: 原型式继承

评论

暂无评论数据

暂无评论数据

目录