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中,否则每个实例的方法都占据一块内存。

  • 相关阅读:
    sklearn linear_model,svm,tree,naive bayes,ensemble
    便利过滤
    js下载
    小程序修改radio的大小
    el-tree 问题与需求
    jsp页面用html引入vue.js注意问题
    WebPack
    yarn
    vue-cli 4以上 vue.config.js
    Cannot find module 'core-js/modules/es6.regexp.constructor'
  • 原文地址:https://www.cnblogs.com/zycbloger/p/5554026.html
Copyright © 2011-2022 走看看