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的构造函数共用事例的更多相关文章
- js高级——构造函数,实例对象和原型对象——prototype、__proto__和constructor构造器
一.前言 了解JavaScript面向对象,需要先了解三个名词: 构造函数,实例对象和原型对象. 注意:JavaScript中没有类(class)的概念,取而代之的是构造函数,两者类似却又有很大的差别 ...
- js 时间构造函数
js 时间构造函数,js中没有类似ToString("yyyy-mm-dd HH:mm:ss") 的方法,但是可以用下面的方式来初始化 var cdate = new Date(& ...
- JS基础——构造函数VS原型
JS是一种基于对象的语言.在使用过程中不免遇到复制对象的问题.但通常我们採用的直接赋值'obj1=obj2'这样的做法会出现数据覆盖问题. 也就是对象引用过程中引用地址一致.导致对象数据被改动的问题. ...
- JS中构造函数和普通函数有什么区别
JS中构造函数有普通函数有什么区别? 1.一般规则 构造函数都应该以 一个大写字母开头,eg: function Person(){...} 而非构造函数则应该以一个小写字母开头,eg: functi ...
- JS高级---构造函数通过原型添加方法,原型的作用: 共享数据, 节省内存空间
JS高级---构造函数,通过原型添加方法,原型的作用: 共享数据, 节省内存空间 构造函数 //构造函数 function Person(sex, age) { this.sex = sex; thi ...
- JavaScript总结学习一:js中构造函数与普通函数的区别
构造函数不仅只出现在JavaScript中,它同样存在于很多主流的程序语言里,比如c++.Java.PHP等等.与这些主流程序语言一样,构造函数在js中的作业一样,也是用来创建对象时初始化对象,并且总 ...
- JS 处理Json数据事例
JS从远端获取数据之后,往往还需要在处理一下,下面给出一个事例,供参考 将'[{"role_id":1,"enable":1},{"role_id&q ...
- JS中构造函数与原型对象的同名属性,实例会取哪一个
构造函数与原型对象的同名属性,实例会取哪一个? 看了下面的过程,再回忆JS高程3里关于这部分的示意图.实例my在new的时候,本身就获得了a属性,所以my.a是1,倘若在new的时候如果没有赋予a属性 ...
- js中构造函数与普通函数的区别
构造函数不仅只出现在JavaScript中,它同样存在于很多主流的程序语言里,比如c++.Java.PHP等等.与这些主流程序语言一样,构造函数在js中的作业一样,也是用来创建对象时初始化对象,并且总 ...
随机推荐
- Android KeyCode 列表
基本按键 KEYCODE_0 按键'0' 7 KEYCODE_1 按键'1' 8 KEYCODE_2 按键'2' 9 KEYCODE_3 按键'3' 10 KEYCODE_4 按键'4' 11 KEY ...
- 20.DOM
定义 文档对象模型(Document Object Model)是一种用于HTML和XML文档的编程接口. 查找元素 1.直接查找 document.getElementById 根据ID获取一个标签 ...
- scala开发环境安装
安装JDK java 运行环境 ,这里不详说了,熟悉java的朋友应该都会,我们主要关注下Scala的安装. 安装scala 1.下载scala http://yunpan.cn/c ...
- mysql__存储过程
1.存储过程相当于我们学的各种高级语言的函数,既然是函数就可能有参数,先介绍参数类型: 存储过程主要包含三种参数类型,注意我说的不是数据类型(INT.VARCHAR) 第一种:IN输入参数:表示这种参 ...
- BIOS相关
BIOS设置中恢复默认设置的选项是Load Optimized Defaults, 但是有的电脑是restore,我的就是 有的电脑进入bios需要按住Fn+F2一些操作也需要按Fn,比如说保存并退出 ...
- vue.js设置、获取、删除cookie
项目需要前端获取后台返回的cookie,并以此作判断.我是在main.js入口文件下使用的 具体代码: new Vue({ el: '#app', router, template: '<App ...
- ASCII代码
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧 ...
- 【Python】 多线程并发threading & 任务队列Queue
threading python程序默认是单线程的,也就是说在前一句语句执行完之前后面的语句不能继续执行(不知道我理解得对不对) 先感受一下线程,一般情况下: def testa(): sleep(1 ...
- elementUI-事件绑定Bug
刚开始使用elementUI的,慢慢的摸索.今天在绑定click事件的时候,在给el-某标签绑定.然后事件失效了.我就很纳闷,这怎么可能失效呢,当我给它的自己元素嵌套了一层div的时候,仍可是使用所以 ...
- java 打印近似圆
只要给定不同半径,圆的大小就会随之发生改变近似圆如图 设半径为r,圆心为(r,r). 由勾股定理 易得y = r -√(2*r*x-x*x) 此处注意x+=2.因为打印窗口上一行2个字节的宽度与一列的 ...