创建对象的方式有以下几种:

1、基于Object的方式创建对象

 var obj = new Object();
    obj.name = '苏鸢';
    obj.age = 18;
    obj.address = '璃月';
    obj.show = function () {
        // 方法一使用字符串拼接
        // document.write('姓名:' + this.name + '<br>' + '年龄:' + this.age + '<br>' + '住址:' + this.address)
        // 方法二使用模板字符串
        document.write(
            `${'姓名:'+obj.name}<br>
            ${'年龄:'+obj.age}<br>
            ${'住址:'+obj.address}<br>`
        )
    }
    // 调用show方法
    obj.show();

2、使用对象字面量创建对象

var obj = {
        name: '苏鸢',
        age: 18,
        address: '璃月',
        show: function () {
            document.write(
                `${'姓名:'+obj.name}<br>
            ${'年龄:'+obj.age}<br>
            ${'住址:'+obj.address}<br>`
            )
        }
    }
    obj.show();

3、使用工厂模式创建对象

        工厂模式:通过函数封装创建函数的细节,=> 就是把创建对象的过程封装在函数中。

        工厂模式要点: 当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象, 而不需要知道里面其中所创建的细节。

        工厂模式的弊端:

             1.使用 intanceof 无法看出函数之间内在的联系:比如:下面的例子,user1这个实例对象和构造函数(new Object) 的关系.

             2.不变的内容(属性,方法),重复调用,浪费资源。

function creatUser(name, age, address) {
        var obj = new Object();
        obj.name = name;
        obj.age = age;
        obj.address = address;
        obj.show = function () {
            document.write(
                `${'姓名:'+obj.name}<br>
            ${'年龄:'+obj.age}<br>
            ${'住址:'+obj.address}<br>`
            );
        }
        return obj;
    }
    var user1 = creatUser('优菈', 19, '蒙德');
    user1.show()
    console.log(user1 instanceof creatUser) //false

4、使用构造函数创建对象。

    构造函数有一个约定:首字母大写,

    构造函数:就像是一个类,使用了一个模板

    构造函数:是来解决函数之间的内部关系。

function creatUser(name, age, address) {
        this.name = name;
        this.age = age;
        this.address = address;
        this.show = function () {
            document.write(
                `${'姓名:'+this.name}<br>
            ${'年龄:'+this.age}<br>
            ${'住址:'+this.address}<br>`
            )
        }
    }
    var user1 = new creatUser('胡桃', 20, '璃月');
    user1.show();
    console.log(user1 instanceof creatUser) //true

  5、使用 prototype 创建对象。

    优点:

    1、prototype是一个指针,并指向一个对象。这个指向的对象的所有属性和方法,都会被构造函数的所创建的实例对象所继承(共享)

    2、不重复调用内部函数,存在继承属性,不浪费资源。

    补充:具体的实例叫做对象,抽象的对象叫原型。

function creatUser(name, age, address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }
    creatUser.prototype.show = function () {
        document.write('姓名:' + this.name + '<br>' + '年龄:' + this.age + '<br>' + '地址:' + this.address);
    }
    var user1 = new creatUser('刻晴', 21, '璃月');
    user1.show()
    creatUser.prototype.chara = '甘雨';
    console.log(user1.chara); //甘雨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值