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