zoukankan      html  css  js  c++  java
  • 【原创】关于对象+原型+继承(一)

    看下面例子:

     1 var a={
     2       x:2,
     3       getNumber:function(z){
     4          return this.x+this.y+z;
     5       }                          
     6 } ;   
     7 
     8 
     9 var b={
    10       y:23,
    11      __proto__:a;  //此处可在外写成:b.construtor.prototype=a;
    12 //表示对象b继承至对象a;__proto__属性为为对象自身隐含属性     
    13 } ;  
    14 
    15 b.getNumber(4);//输出29
    //__proto__属性为神秘链接属性,ie无该属性,只可用于学习测试所用,正式编程无法使用

    如果调用ES5标准化的实现原型继承的可选方法  var b=Object.create(a);//对象b的原型对象是a(对象b的__proto__属性的原型对象是a)

    如下代码:

     1 var a={ x:1,cal:function(z){return this.x+this.y+z;}};var b={y:3};  b=Object.create(a);b.y;
     2 //undefined b对象中的属性y被覆盖
     3 
     4 var a={ x:1,cal:function(z){return this.x+this.y+z;}};var b={y:3};  b=Object.create(a);b.x;
     5 //1
     6 
     7 var a={ x:1,cal:function(z){return this.x+this.y+z;}};var b={y:3};  b=Object.create(a);b.cal;
     8 // function a.cal(z),输出a对象的属性
     9 
    10 var a={ x:1,cal:function(z){return this.x+this.y+z;}};var b={y:3};  b=Object.create(a);b;
    11 //Object {}
    12 
    13 var a={ x:1,cal:function(z){return this.x+this.y+z;}};var b={y:3};  b=Object.create(a);b.cal(23);
    14 //NaN,此时b对象中的属性y被覆盖
    15 
    16 
    17 var a={ x:1,cal:function(z){return this.x+this.y+z;}};var b=Object.create(a);b.y=2;b.cal(23);
    18 //26  手动添加对象b的属性y

     未完待续

  • 相关阅读:
    Linux学习之网络基础
    C# 随笔
    最牛B的编码套路
    c++ Primer 第七章不熟悉知识点总结
    oracle求表的倒数二行数据
    c++ Primer 第六章不熟悉知识点总结
    c++ Primer 第五章不熟悉知识点总结
    c++ Primer 第四章不熟悉知识点总结
    c++ Primer 第三章不熟悉知识点总结
    骑驴找马
  • 原文地址:https://www.cnblogs.com/pm-dongjian/p/5019779.html
Copyright © 2011-2022 走看看