0%

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

发布于 / 分类: JavaScript / 暂无评论 / 阅读量 750

最后更新于 2018年07月30日

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

对象与原型的继承组合模式中仿冒和继承不会冲突吗? location.serach查询字符串参数
  • 滑动验证
    »
  • weixiao kaixin tushetou jingkong deyi fanu liezui liuhan daku ganga bishi nanguo lihai qian yiwen numu tu yi haixiu se fadai minyan hehe henkaixin huaji biyiyan kuanghan maimeng shui xiaku penqi zhangzui pen aini ye niu laji ok chigua renshi kongbu shuai xiaoxiese touxiao huaixiao jingnu chihuai kaisang xiaoku koubi zhuangbi lianhong kanbujian shafa zhijing xiangjiao dabian yaowan redjing lazhu rizhi duocang chixigua hejiu xixi xiaopen goukun xiaobuchu shenme wusuowei guancha lajing chouyan xiaochi bie zhadanzui zhadanxiao