zoukankan      html  css  js  c++  java
  • js的构造函数

    var a = function(b) {
      this.b = b;     //属性
    };
    
    a.prototype.f = function() {
        return this.b;  //方法
    };

    var aa = new a("Hello World!");
    aa.b // "Hello World!"
    aa.f() // "Hello World!"

    1.

    构造函数的属性是属于实例的而且两个互不干扰,在不同的堆栈中

    构造函数上定义的方法,不是持有同一引用,实例的方法存放在内存不同的地方

    2.

    在prototype上定义的属性,在所有的实例中都共享同一份,在任何地方对其设置,所有的实例都同时产生变化

    在prototype上定义的方法,持有同一引用,实例的方法存放在同一块内存区域

    3.总结

    在构造函数中定义的属性,每个实例都有一个副本,互不影响;但是在prototype上定义的属性,在所有的实例中共享同一个属性,对属性的改变会影响到所有的实例。(当改变构造函数的prototype的话,其他实例也会根着改变!)
    那么属性最好定义在构造函数中,而方法最好定义在prototye中,否则每个实例的方法都占据一块内存。

  • 相关阅读:
    迪杰斯特拉算法
    基数排序
    快排算法
    插入排序与希尔排序算法
    java--jmm知识
    Java基础
    socket代理
    TestLink 学习第一周
    软件体系结构第三章之解释器风格
    如何衡量个人在各自团队的效率和绩效
  • 原文地址:https://www.cnblogs.com/zycbloger/p/5554026.html
Copyright © 2011-2022 走看看