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

     未完待续

  • 相关阅读:
    475. Heaters
    69. Sqrt(x)
    83. Remove Duplicates from Sorted List Java solutions
    206. Reverse Linked List java solutions
    100. Same Tree Java Solutions
    1. Two Sum Java Solutions
    9. Palindrome Number Java Solutions
    112. Path Sum Java Solutin
    190. Reverse Bits Java Solutin
    202. Happy Number Java Solutin
  • 原文地址:https://www.cnblogs.com/pm-dongjian/p/5019779.html
Copyright © 2011-2022 走看看