博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js创建对象的多种方式及优缺点
阅读量:5838 次
发布时间:2019-06-18

本文共 1988 字,大约阅读时间需要 6 分钟。

 

在js中,如果你想输入一个的信息,例如姓名,性别,年龄等,如果你用值类型来存储的话,那么你就必须要声明很多个变量才行,变量声明的多了的话,就会造成变量污染。所以最好的方式就是存储到对象中。下面能我就给大家介绍几种创建对象的方式,并且给大家说一下他们的优缺点

方式一:对象字面量

var obj={                name:"赵云",                type:"突进",                skill:"抢人头"            }

缺点:只能创建一次对象,复用性较差,如果要创建多个对象,代码冗余度太高

 

方式二:使用内置构造函数

var obj=new Object();                obj.name="李白";                obj.type="刺客";                obj.skill="舞剑";

 

缺点:只能创建一次对象,复用性较差,如果要创建多个对象,代码冗余度太高

方式三:工厂模式(不推荐使用)

function creat(name,type,skill){            var obj=new Object();                obj.name=name;                obj.type=type;                obj.skill=skill;                obj.say=function(){                    console.log("黄河之水天上来");                }                return obj;        }        var hero=creat("李白","刺客","写诗");        var heroNext=creat("赵云","突进","将军");

 

缺点:对象无法识别,因为所有的实例都指向一个原型

方法四:构造函数模式

function Person(singer,song,type){            //默认吧this传给new出来的对象,并且默认是返回该对象            this.singer=singer;            this.song=song;            this.type=type;        }        var obj=new Person("田馥甄","小幸运","流行歌");        console.log(obj);

注意点:1.如果不写返回值,默认返回的是新创建出来的对象 (一般都不会去写这个return语句)

     2.如果我们自己写return语句 return的是空值(return;),或者是基本类型的值或者null,都会默认返回新创建出来的对象

     3.如果返回的是object类型的值,将不会返回刚才新创建的对象,取而代之的是return后面的值

优点:实例时可以识别为一个特定的类型

缺点:构造函数中定义函数,那么每次创建对象,都会重新创建该函数,这样会导致全局变量增多,造成污染,代码结构会混乱,不易维护

方法五:原型

function Person(name, age, gender) {            this.name = name;            this.age = age;            this.gender = gender;        }        var p =new Person("张学友",18,"male");        var p1 = new Person("刘德华",19,"male");        Person.prototype.sayHello = function () {            console.log("你好我是" + this.name);        }        Person.prototype["sing"] = function () {            console.log("一千个伤心的母牛");        }        p.sayHello();        p1.sayHello();        p.sing();        p1.sing();

优点:说明:构造函数的原型对象中的成员,可以被该构造函数创建出来的所有对象访问,而且,所有的对象共享该对象,所以,我们可以将构造函数中需要创建的函数,放到原型对象中存储,这样就解决 全局变量污染的问题 以及 代码结构混乱的问题

缺点:不能初始化参数

转载地址:http://hyjcx.baihongyu.com/

你可能感兴趣的文章
spring两大核心对象IOC和AOP(新手理解)
查看>>
hp 服务器通过串口重定向功能的使用
查看>>
MongoDB CookBook读书笔记之导入导出
查看>>
shell如何快速锁定所有账号
查看>>
HTML 5实现的手机摇一摇
查看>>
此博客不再发表对自己私事的看法
查看>>
导致Asp.Net站点重启的10个原因
查看>>
【PMP】Head First PMP 学习笔记 第一章 引言
查看>>
抓住云机遇编排工作 搞定复杂IT工作流
查看>>
MYSQL的longtext字段能放多少数据?
查看>>
MTK 平台上如何给 camera 添加一种 preview size
查看>>
云计算最大难处
查看>>
关于数据分析思路的4点心得
查看>>
Memcached安装与配置
查看>>
美团数据仓库的演进
查看>>
SAP被评为“大数据”预测分析领军企业
查看>>
联想企业网盘张跃华:让文件创造业务价值
查看>>
记录一次蚂蚁金服前端电话面试
查看>>
直播源码开发视频直播平台,不得不了解的流程
查看>>
Ubuntu上的pycrypto给出了编译器错误
查看>>