前端中对象的几种创建方式

这篇具有很好参考价值的文章主要介绍了前端中对象的几种创建方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

创建对象的几种方式:

1.字面量方式

2.工厂模式

3.构造函数模式

4.原型模式

一:对象字面量方式

        var obj1 = {};
        obj1.name = '张三';
        obj1.age = '1';
        obj1.sex = '男';

        var obj2 = {};
        obj2.name = '李四';
        obj2.age = '2';
        obj2.sex = '男';

        console.log(obj1);
        console.log(obj2);

前端中对象的几种创建方式

缺点:创建多个对象时,需要重复代码,不能复用。

二:工厂模式(利用函数创建对象)

        function createFactory(id, name, sex, age) {
            // 创建空对象
            var obj = new Object;
            //添加属性
            obj.id = id;
            obj.name = name;
            obj.sex = sex;
            obj.age = age;
            //返回对象
            return obj;
        }
        var obj3 = new createFactory('01', '王五', '男', '1');
        var obj4 = new createFactory('02', '王六', '女', '2');
        console.log(obj3);
        console.log(obj4);

前端中对象的几种创建方式

作用:批量创建同类型对象,降低代码冗余度。

缺点:创建出的新对象,不知道是什么Person或者Animal类型,需看函数内部代码。

三:构造函数模式(利用类创建对象)

构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 一起使用。一般情况下我们会把公共的属性定义到构造函数里面,而公共的方法放到原型对象身上。 

知识点:

new 在执行时会做四件事情

1.在内存中创建一个新的空对象。
2.让构造函数中的 this 指向这个新的对象。
3.执行构造函数里面的代码,给这个新对象添加属性和方法。
4返回这个新对象(所以构造函数里面不需要 return )。

        function Person(uname, age) {
            this.uname = uname
            this.age = age
            this.sing = function () {
                console.log('我会唱歌')
            }
        }
        var person1 = new Person('刘德华', 3);
        var person2 = new Person('张学友', 4)
        console.log(person1);
        person1.sing();
        console.log(person2);
        person1.sing();
        console.log(person1.sing == person2.sing);

前端中对象的几种创建方式

 注意:person1.sing和person2.sing这两个方法不是同一个Function实例,因为每次定义函数时,都会初始化一个对象。在实例化时,如果不想传参数,那么构造函数后面的括号可加可不加,var person1=new Person也可以实例化。只要有 new 操作符,就可以调用相应的构造函数。

作用:用于创建特定类型对象。

缺点:每创建一个实例都要开辟一个内存空间来存放同一个方法,浪费内存。可通过第四中方法原型方法来解决此问题。

构造函数模式与工厂模式的区别:

1.构造函数没有显示的创建对象。

2.将属性和方法添加到this上。

3.没有return。

4.构造函数名字的第一个字母大写。

5.构造函数需与new一起使用,来创建对象。

四:原型模式(利用函数的prototype创建对象)

        function Person1(uname, age) {
            this.uname = uname
            this.age = age
        }
        Person1.prototype.sing=function(songName){
            console.log(this.uname+'会唱'+songName);
        }
        var person3 = new Person1('刘德华', 3);
        var person4 = new Person1('张学友', 4)
        console.log(person3);
        person3.sing('爱你一万年');
        console.log(person4);
        person4.sing('吻别');
        console.log(person3.sing == person4.sing);

前端中对象的几种创建方式

 注意:person3.sing 和 person4.sing是通过__proto__属性继承Person1.prototype上的sing方法。

平常工作中,构造函数模式和原型模式组合使用比较多。

作用:原型对象上面定义的属性和方法可以被对象实例共享。

相关原型链链接请参考:原型链_xiaoxiao无脸男的博客-CSDN博客

以下是全部代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        //一:字面量方式
        var obj1 = {};
        obj1.name = '张三';
        obj1.age = '1';
        obj1.sex = '男';

        var obj2 = {};
        obj2.name = '李四';
        obj2.age = '2';
        obj2.sex = '男';

        console.log(obj1);
        console.log(obj2);


        //二:工厂模式
        function createFactory(id, name, sex, age) {
            // 创建空对象
            var obj = new Object;
            //添加属性
            obj.id = id;
            obj.name = name;
            obj.sex = sex;
            obj.age = age;
            //返回对象
            return obj;
        }
        var obj3 = new createFactory('01', '王五', '男', '1');
        var obj4 = new createFactory('02', '王六', '女', '2');
        console.log(obj3);
        console.log(obj4);

         //三:构造函数模式
        function Person(uname, age) {
            this.uname = uname
            this.age = age
            this.sing = function () {
                console.log('我会唱歌')
            }
        }
        var person1 = new Person('刘德华', 3);
        var person2 = new Person('张学友', 4)
        console.log(person1);
        person1.sing();
        console.log(person2);
        person1.sing();
        console.log(person1.sing == person2.sing);

        //四:原型模式
        function Person1(uname, age) {
            this.uname = uname
            this.age = age
        }
        Person1.prototype.sing=function(songName){
            console.log(this.uname+'会唱'+songName);
        }
        var person3 = new Person1('刘德华', 3);
        var person4 = new Person1('张学友', 4)
        console.log(person3);
        person3.sing('爱你一万年');
        console.log(person4);
        person4.sing('吻别');
        console.log(person3.sing == person4.sing);



    </script>

</body>

</html>

前端中对象的几种创建方式文章来源地址https://www.toymoban.com/news/detail-400710.html

到了这里,关于前端中对象的几种创建方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity中获取游戏对象的几种方式

    在学习如何获取物体和组件时先明白说明什么是物体,组件和对象。 物体:unity中在层级显示的东西都可以叫做物体 组件:unity中提供了大量已经写好的组件,比如刚体,碰撞体等,自己 编写的脚本也是一种组件类 对象:挂载到物体上的脚本是一个实例化的组件,也就是一

    2024年01月17日
    浏览(37)
  • Linux创建文件的几种方式

    使用 touch 命令来创建一个空文件,或者多个文件。当文件存在时,只会修改文件的访问和修改时间,不会清空内容。 批量创建 使用 vi vim 编辑器,输入内容并保存退出,来创建一个文件 :wq 保存退出 使用重定向符号 创建一个空文件 使用 创建文件,需要注意,当文件存在时

    2024年02月04日
    浏览(56)
  • js中对象进行赋值操作的几种方式

    最近开发碰到多参数赋值的问题,参数之间总是互相影响,导致出现一些奇怪的bug,查阅了相关资料,全部在这里了,记录一下,希望可以帮到有需要的人 上述代码中,obj1和obj2指向了同一块内存区域,修改obj1的age属性,也会影响到obj2的age属性。这是因为obj2只是复制了obj

    2024年02月02日
    浏览(38)
  • python创建虚拟环境的几种方式

    venv是Python的虚拟环境管理工具,它可以创建独立的Python环境,让不同项目使用不同的Python版本和依赖库,避免版本冲突和依赖冲突问题。使用Python venv可以方便地创建、激活、退出、删除虚拟环境,以及在虚拟环境中安装、升级、卸载包等操作。   以下是使用Venv创建和管理

    2024年02月02日
    浏览(53)
  • python中进程的几种创建方式

    在新创建的子进程中,会把父进程的所有信息复制一份,它们之间的数据互不影响。 该方式只能用于Unix/Linux操作系统中,在windows不能用。 multiprocessing模块提供了一个Process类来代表一个进程对象,下面的例子演示了启动一个子进程并等待其结束: join()方法表示主进程等待子

    2024年02月11日
    浏览(61)
  • 前端 mock 数据的几种方式

    目录 接口demo Better-mock just mock koa webpack Charles 总结         具体需求开发前,后端往往只提供接口文档,对于前端,最简单的方式就是把想要的数据写死在代码里进行开发,但这样的坏处就是和后端联调前还需要再把写死的数据从代码里删除,最好的方式是无侵入的  m

    2024年02月17日
    浏览(48)
  • 前端实现动画的几种方式简介

    这里只是做简要介绍,属于知识的拓展。每种方案的更详细的使用方式需要各位自行了解。 大体上技术方案分为:CSS 动画、SVG 动画、CSS + SVG、JS 控制的逐帧动画、GIF 图。 CSS 实现动画有两种方式,一种是使用 trasition ;另一种是使用 animation 。 默认情况下,当 CSS 中的属性值

    2024年04月22日
    浏览(44)
  • 前端技术中的几种居中方式

    1、使用margin:0px auto可以使盒子水平居中,但要设置宽度。 2、在父元素中使用text-align:center可以将子元素设置水平居中,但子元素必须为行内元素或行内块元素。 3、使用绝对定位,父相子绝的原则,在子元素中设置left:50%和transform:translateX(-50%)。可以不设置宽高。       这里

    2024年02月04日
    浏览(44)
  • 创建微信小程序的几种方式

    在官网上下载微信开发者工具,之后使用微信开发者工具新建项目即可。 微信这边提供了多个模板,可以直接下载模板快速搭建上线,也可以使用空白模板根据需求自行编写。 空白模板项目结构: 对于刚接触小程序的开发者来说存在一些问题: 标签与普通 HTML 不同,对于

    2024年02月11日
    浏览(42)
  • springboot接收前端参数的几种方式

    目录 第一种:直接在方法中指定参数 第二种:使用@requesrParam注解 第三种方法:基于@pathVariable  第四种方法:基于@ResquestBody 在开始之前,我们需要一下准备工作,创建数据库,springboot工程,添加依赖,配置文件,使用的技术有mybatisplus,springboot,maven,mysql。 首先,数据库

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包