zoukankan      html  css  js  c++  java
  • 遇到的有关js继承和原型链的一个问题

    function A(var1){
      this.var1 = var1;
    }
    A.prototype = {
       var1:1
    }
    var b=new A();
    b.var1 = 2;
    var c = new A();
    console.log(b.var1); //输出2
    console.log(c.var1); //输出undefined
    
    function A(){
     //do noting
    }
    A.prototype = {
      var1:1
    }
    var b=new A();
    b.var1 = 2;
    var c = new A();
    console.log(b.var1); //输出2
    console.log(c.var1); //输出1
     

    为什么输出不同,解释如下:

    对于第一段代码:在实例化的过程中,b和c对象用到了A构造函数,那个var1都变成了b和c的自有属性,所以打印 b或者c的 var1属性的值的时候,直接从当前对象取值,而c的var1属性没有赋值,所以为undefined。


    对于第二段代码:var1是b对象的自有属性而不是c的自有属性,所以打印b的值就是直接打印的自有属性的值2,而打印c则是打印的原型对象的值。

  • 相关阅读:
    RTP/RTSP编程
    makefile
    VS 2010内存泄漏检测
    Linux Shell中捕获CTRL+C
    const
    Hdu 5344
    Hdu5762
    CF1200C
    CF1200B
    CF1200A
  • 原文地址:https://www.cnblogs.com/goingforward/p/6279342.html
Copyright © 2011-2022 走看看