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

版权声明:本文为l8l8原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/l8l8/p/8729142.html