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对象的几种创建方式与优缺点的更多相关文章

  1. 面向面试编程——javascript对象的几种创建方式

    javascript对象的几种创建方式 总共有以下几个模式: 1.工厂模式 2.构造函数模式 3.原型模式 4.混合构造函数和原型模式 5.动态原型模式 6.寄生构造函数模式 7.稳妥构造函数模式 1 ...

  2. Javascript对象的几种创建方式

    (1) 工厂模式 Function(){ Var child = new object() Child.name = “欲泪成雪” Child.age=”20” Return child; } Var ...

  3. js对象的几种创建方式和js实现继承的方式[转]

    一.js对象的创建方式 1. 使用Object构造函数来创建一个对象,下面代码创建了一个person对象,并用两种方式打印出了Name的属性值. var person = new Object(); ...

  4. 请列举出JS对象的几种创建方式?

    javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON:但写法有很多种,也能混合使用. 1.对象字面量的方式 var person={firstname:&q ...

  5. JS 对象的三种创建方式

    变量 instanceof 类型的名字----->布尔类型,true就是这种类型,false不是这种类型 在当前的对象的方法中,可以使用this关键字代表当前的对象   1.调用系统的构造函数创 ...

  6. JavaScript 对象的几种创建方法

    /** * Created by 2016 on 2016/6/4. */ function Box(){ var obj = new obj(); obj.name = "Lee" ...

  7. java线程的3种创建方式及优缺点

    线程创建简介 1.在java中表示线程的是Thread类.无论是那种方式创建线程,本质上都是创建Thread类的对象. 2.Thread类继承Runnable接口,且也有以Runnable作为参数的构 ...

  8. 精读JavaScript模式(四),数组,对象与函数的几种创建方式

    一.前言 放了个元旦,休息了三天,加上春运抢票一系列事情的冲击,我感觉我的心已经飞了.确实应该收收心,之前计划的学习任务也严重脱节了:我恨不得打死我自己. 在上篇博客中,笔记记录到了关于构造函数方面的 ...

  9. JavaScript 闭包的详细分享(三种创建方式)(附小实例)

    JavaScript闭包的详细理解 一.原理:闭包函数--指有权访问私有函数里面的变量和对象还有方法等:通俗的讲就是突破私有函数的作用域,让函数外面能够使用函数里面的变量及方法. 1.第一种创建方式 ...

随机推荐

  1. 吴裕雄--天生自然 JAVA开发学习:修饰符

    public class InstanceCounter { private static int numInstances = 0; protected static int getCount() ...

  2. 实操windows2008搭建IIS php mysql

    一.IIS的安装直接略过 二.主要记录PHP.MYSQL环境的搭建 1.本次环境搭建使用的环境版本号对应如下: 1.PHP:PHP 7.2 (7.2.28) 下载地址:https://windows. ...

  3. ios ktvhttpcache 音视频缓存插件使用

    1.PodFile 文件增加 pod 'KTVHTTPCache',  '~> 2.0.0' 2.在终端 需要先cd到podfile文件所在目录  执行pod install 3.在header ...

  4. c语言删除文件的指定行,更新文件

    有时候我们需要删除文件的某一行,来更新文件,在这我个人扩展了一个函数,以删除指定条件的行. static void UpdateHistoryFile(void) { FILE *fin,*fout; ...

  5. 蓝桥杯 sine之舞(递归)

    Description 最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功.所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力.不妨 ...

  6. MACOSX下查看某个端口被哪个程序占用及杀进程方法

    sudo lsof -i :9000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 61342 a 313u IPv6 0x11111 ...

  7. hdu2222 (AC自动机模板)

    题:http://acm.hdu.edu.cn/showproblem.php?pid=2222 学习出:https://bestsort.cn/2019/04/28/402/ 主要是fail的建立. ...

  8. E. Arson In Berland Forest(思维,找二维阵列中的矩阵,二分)

    题:https://codeforces.com/contest/1262/problem/E 分析:预处理出阵列中的矩阵,然后二分答案还原题目的烧火过程,判断是否满足要求 #include<b ...

  9. SecureCRT8.3

    https://blog.csdn.net/dff1993/article/details/81189610 这篇文章我试过,成功激活了SecureCRT8.3

  10. shell_clean_log

    apache日志每天进行轮转: vim /usr/local/apache2/conf/extar/httpd-vhosts.conf...ErrorLog "| /usr/local/ap ...