JS基础:4种创建对象方式

1、字面量创建对象

写法简洁,代码结构清晰,但每创建一个对象都需要重复绑定属性和方法。

<!DOCTYPE html>
<html lang="en">
                <head>
                        <meta charset="UTF-8">
                        <title>Title</title>
                </head>
                <body>
                        <script>
                                
                                var obj1={
                                       //绑定属性
                                       name : "绑定属性",
                                       //绑定方法
                                        fun1:function(){
                                            console.log("绑定方法");
                                        }
                                }
                                //输出属性值,输出结果
                                console.log(obj1.name);
                                //调用对象中的方法,输出结果
                                obj1.fun1();
                        </script>
                </body>
</html>

2、new Object 创建对象

每创建一个对象都需要重复绑定属性和方法,并且绑定步骤反锁。

<!DOCTYPE html>
<html lang="en">
                <head>
                        <meta charset="UTF-8">
                        <title>Title</title>
                </head>
                <body>
                        <script>
                                
                                var obj2 = new Object();
                                //绑定属性
                                obj2.name = "绑定属性";
                                //绑定方法
                                obj2.fun2 = function (){
                                    console.log("绑定方法");
                                };
                                //输出属性值,输出结果
                                console.log(obj2.name);
                                //调用对象中的方法,输出结果
                                obj2.fun2();
                                /*new的功能:(重要)
                                        开辟内存空间,存储新创建的对象(new Object)
                                        把this设置为当前对象
                                        执行内部代码,设置对象属性和方法
                                        返回新创建的对象
                                 */
                        </script>
                </body>
</html>

3、通过工厂函数批量创建对象

将创建对象过程封装函数,反复调用该函数创建对象。可以批量创建对象,提高代码复用性。

但是无论创建什么对象都是new Object(),对象类型不明确。

<!DOCTYPE html>
<html lang="en">
                <head>
                        <meta charset="UTF-8">
                        <title>Title</title>
                </head>
                <body>
                        <script>
                                
                                function factory(name) {
                                        var obj3 = new Object();
                                        obj3.name = name;
                                        obj3.fun3 = function (){
                                                console.log("方法");
                                        };
                                        return obj3;
                                }
                                //调用工厂函数
                                var obj3 = factory("属性");
                                //输出属性值,输出结果
                                console.log(obj3.name);
                                //调用对象中的方法,输出结果
                                obj3.fun3();
                        </script>
                </body>
</html>

4、构造函数创建对象

使用new调用构造函数,创建对象,不用手动返回对象。

构造函数于普通函数本质上没有区别,都是函数,函数只有一种,但普通函数需要使用return返回对象。

因为new会返回新创建的对象,普通函数调用方法需要有return才有返回值,如果没写默认返回undefined。

<!DOCTYPE html>
<html lang="en">
                <head>
                        <meta charset="UTF-8">
                        <title>Title</title>
                </head>
                <body>
                        <script>
                                
                                function obj4(name){
                                        this.name = name;
                                        this.fun4 = function(){
                                                console.log("方法");
                                        }
                                }
                                var  obj = new  obj4("属性");//调用构造函数
                                console.log(obj.name);
                                obj.fun4();

                        /*new的功能:(重要)
                                开辟内存空间,存储新创建的对象(new Object)
                                把this设置为当前对象
                                执行内部代码,设置对象属性和方法
                                返回新创建的对象
                         */
                        /*构造函数于普通函数本质上没有区别,都是函数,函数只有一种
                        写法:构造函数是大驼峰命名法,普通函数是小驼峰命名法
                        功能:构造函数使用this为当前对象绑定属性和方法,普通函数都是一段功能性代码,为了反复调用
                         */
                                 //定义普通函数
                                function demo1(){
                                        console.log("普通方法demo1");
                                }
                                //定义构造函数
                                function  demo2() {
                                        this.name = "demo2属性";
                                        this.demo2fun = function (){
                                                console.log("构造函数demo2");
                                        }
                                }
                                //使用构造方法调用普通函数
                                var de1 = new demo1();
                                console.log(de1);//输出结果 普通方法    demo1       demo{}
                                //new会把this设置为当前对象,执行内部代码,设置对象属性和方法,由于没有this,无法设置属性和方法
                                //会将内部代码执行,并返回一个空的对象

                                //使用普通函数调用方法调用构造函数
                                var de2 = demo2();
                                //输出结果 undefined
                                console.log(de2);
                                //因为new会返回新创建的对象,普通函数调用方法需要有return才有返回值,如果没写默认返回undefined

                                /*对象属性绑定的两种方式;
                                对象.属性名= 属性值;

                                 */
                        </script>
                </body>
</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值