木灵鱼儿

木灵鱼儿

阅读:1322

最后更新:2018/07/30/ 1:03:26

对原型式继承的一些个人理解(不正经系列)

原型式继承是通过一个公用厕所(函数) ,在厕所里创建独立包间(创建构建函数),在这个包间的便器上(原型上)传入不明物体(参数),于是这个物体被现实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)后面,就行了。

版权申明

本文系作者 @木灵鱼儿 原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。

关于作者

站点职位 博主
获得点赞 0
文章被阅读 1322

相关文章

目录树