JavaScript对象的几种创建方式与优缺点
JavaScript中常见的几种创建对象的方式有:Object构造函数模式、对象字面量模式、工厂模式、自定义构造函数模式、构造函数加原型组合模式;他们各自有各自的优缺点和使用场景。
1. Object构造函数模式
- 使用场景:起始时不确定对象内部数据。
- 缺点:语句太多
     var p = new Object()
        p.name = 'tom'
        p.age = 12
        p.steName = function (name) {
            this.name = name
        }
2. 对象字面量模式
- 适用场景:起始时对象数据确定。
- 缺点:如果创建多个对象、有重复代码。
var p = {
            name: 'jack',
            age: 13,
            setName: function (name) {
                this.name = name
            }
        }
3. 工厂模式
- 适用场景:需要创建多个对象。
- 缺点: 对象没有一个具体的类型、都是Object类型。
function createPerson (name,age) { //返回一个对象的函数就是工厂函数
            var obj = {
                name: name,
                age: age,
                sstName: function (name) {
                    this.name = name
                }
            }
            return obj
        }
4. 自定义构造函数模式
- 使用场景: 需要创建多个类型确定的对象。
- 缺点: 每个对象都有相同的数据(方法),浪费内存。
function Person (name,age) {
            this.name = name
            this.age = age
            this.setName = function (name) {
                this.name = name
            }
        }
        var p1 = new Person('tom',15)
        var p2 = new Person('jack',14)
        console.log(p1 instanceof Person) //true p1是Person类型
        function student (name,grade) {
            this.name = name
            this.grade = grade
        }  
        var s1 = new student('peter',6)
        console.log(s1 instanceof student) //true s1是student类型
        console.log(p1,p2)

p1和p2有各自都有相同的setName()方法,造成内存浪费。
5. 构造函数+原型模式
- 使用场景: 要创建多个类型确定的对象
function Person (name,age) {
           this.name  = name
           this.age = age
       }
       Person.prototype.setName = function (name) {
           this.name = name
       }
       var p1 = new Person('tom',12)
       var p2 = new Person('jack',13)
       console.log(p1,p2)

对象的方法被放到了原型上面避免了内存浪费。
JavaScript对象的几种创建方式与优缺点的更多相关文章
- 面向面试编程——javascript对象的几种创建方式
		javascript对象的几种创建方式 总共有以下几个模式: 1.工厂模式 2.构造函数模式 3.原型模式 4.混合构造函数和原型模式 5.动态原型模式 6.寄生构造函数模式 7.稳妥构造函数模式 1 ... 
- Javascript对象的几种创建方式
		(1) 工厂模式 Function(){ Var child = new object() Child.name = “欲泪成雪” Child.age=”20” Return child; } Var ... 
- js对象的几种创建方式和js实现继承的方式[转]
		一.js对象的创建方式 1. 使用Object构造函数来创建一个对象,下面代码创建了一个person对象,并用两种方式打印出了Name的属性值. var person = new Object(); ... 
- 请列举出JS对象的几种创建方式?
		javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON:但写法有很多种,也能混合使用. 1.对象字面量的方式 var person={firstname:&q ... 
- JS 对象的三种创建方式
		变量 instanceof 类型的名字----->布尔类型,true就是这种类型,false不是这种类型 在当前的对象的方法中,可以使用this关键字代表当前的对象 1.调用系统的构造函数创 ... 
- JavaScript 对象的几种创建方法
		/** * Created by 2016 on 2016/6/4. */ function Box(){ var obj = new obj(); obj.name = "Lee" ... 
- java线程的3种创建方式及优缺点
		线程创建简介 1.在java中表示线程的是Thread类.无论是那种方式创建线程,本质上都是创建Thread类的对象. 2.Thread类继承Runnable接口,且也有以Runnable作为参数的构 ... 
- 精读JavaScript模式(四),数组,对象与函数的几种创建方式
		一.前言 放了个元旦,休息了三天,加上春运抢票一系列事情的冲击,我感觉我的心已经飞了.确实应该收收心,之前计划的学习任务也严重脱节了:我恨不得打死我自己. 在上篇博客中,笔记记录到了关于构造函数方面的 ... 
- JavaScript 闭包的详细分享(三种创建方式)(附小实例)
		JavaScript闭包的详细理解 一.原理:闭包函数--指有权访问私有函数里面的变量和对象还有方法等:通俗的讲就是突破私有函数的作用域,让函数外面能够使用函数里面的变量及方法. 1.第一种创建方式 ... 
随机推荐
- 1.Redis简介/配置文件
			redis简介 redis使用入门 redis安装 http://www.runoob.com/redis/redis-install.html [root@yz---- bin]# ll total ... 
- android 设置无标题栏主题
			<application android:theme="@style/Theme.AppCompat.Light.NoActionBar"> 
- http协议笔记(不全)
			1.URL 统一资源定位系统 URL由三部分组成:资源类型.存放资源的主机域名.资源文件名.url是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址 ... 
- [YNOI2018]五彩斑斓的世界&CF896E(分块+并查集)
			由于晚上比赛二连(Atcoder&codeforces),外加复习学考,所以暂时没时间写了. 贴个O(n√n)的分块代码,洛谷和cf上都过了,但垃圾bzoj卡不过去,不改了. #include ... 
- jdk8下载地址
			http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Java SE Binaries ... 
- D - Daydreaming Stockbroker Gym - 101550D
			题目链接:http://codeforces.com/gym/101550/attachments 总的来说就是要: 极大值卖出,极小值买入, 再加上端点时的特判. 还有就是会有连续几天股票价格相同的 ... 
- Hbase的极限测试经验之java项目的jar包导入
			Hbase的极限测试的内容是把之前编过的网站的后台数据库改成hbase即可. 我很快就在hbase数据库中建完表,也把关于操作数据库的函数写好了. 当我调试时,发现在jsp中的操作数据库的函数都不能用 ... 
- [SDOI2019]世界地图(kruskal重构树+虚树)
			通过子任务1.3十分显然,子任务4实际上就是线段树,和我下午写的[SDOI2015]道路修建一模一样,堪称“我抄我自己”,不会的可以先做一下这个题. 然后考虑正解,参考了zhoushuyu的博客,首先 ... 
- 量化投资_轻松实现MATLAB蒙特卡洛方法建模
			1 目录 * MATLAB随机数的产生 - Uniform,Normal & Custom distributions * 蒙特卡洛仿真 * 产生股票价格路径 * 期权定价 - 经典公式 - ... 
- 十三、linux-mysql的mysql的核心优化思想
			一.数据库运维管理思想核心 1.未雨绸缪,不要停留在制度上,而是要实际做出来 2.亡羊补牢,举一反三,不要好了伤疤忘了疼 3.完善的框架设计及备份.恢复策略 4.定期思考,并实战模拟以上策略演练 二. ... 
