js的构造函数共用事例

Posted 悔创阿里-杰克马

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js的构造函数共用事例相关的知识,希望对你有一定的参考价值。

在使用构造函数去实现一种功能时,我们有时候往往需要实现这个功能,会因此产生多个堆内对象。这样就会造成堆内存滥用。占用不该占用的空间。为此我们可以利用函数把共用的内容封装起来。放便我们的使用。很多东西其实都是基于堆与栈的,深入理解一下更有利于学习计算机。代码不算字这个限制什么时候可以消除呢。来自版主的吐槽。为了150字我也很绝望。

  具体事例:

  

function Person(name,age,gender){
  this.name = name;
  this.age = age;
  this.gender =gender;
  this.sayname = function(){
  console.log("hello! my name is"+ this.name);  
}
}
var per1 = new Person("ton",12,"男");
var per2 = new Person("lily",11,"男");
var per3 = new Person("tom",18,"男"); //我们来判断我们生产的对象是不是相同的。
console.log(per1.sayname==per3.sayname);// false;
//上面这种情况很明显在我们调用的时候会在堆内产生一个新对象。
//为了优化这种情况,我们需要将this.sayname这个共用体单独拿出来。
    
             function Person(name,age,gender){
  this.name = name;
  this.age = age;
  this.gender =gender;
    //向对象中添加一个方法
  this.sayname = fun;
}
//将sayname方法在全局作用域中定义;
function fun(){
  console.log("hello! my name is"+ this.name);  
}
//创建一个Person的例子,我们来检查一下。

    var per4 = new Person("猪八戒",32,"男");
    var per5 = new Person("唐僧",33,"男");
    console.log(per4.sayname==per5.sayname);// true。 问题解决了。

 感谢观看如果有那里错误还请大佬们指正。来自一个萌新的膜拜。弱者的qq:1985076744.

以上是关于js的构造函数共用事例的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段

vue.js 组件共用函数的方法之一

js - 创建对象的几种方式(工厂模式构造函数模式原型模式)

防止 Proguard 删除片段的空构造函数

无法解析片段中的 ViewModelProvider 构造?