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