39 javaScript创建对象的方式

本文详细介绍了JavaScript中创建对象的三种常见方法:JSON、直接字面量和构造函数。对于JSON方式,适合临时使用,但无法用作构造新对象;直接字面量方式同样不推荐用于构造模板。构造函数方式中,推荐使用带有初始化方法的构造函数,它允许更灵活的参数传递,同时避免了内存浪费。文章还比较了不同构造函数方式的优缺点,并强调了使用下划线前缀的私有方法实践。
摘要由CSDN通过智能技术生成

39 javaScript创建对象的方式

1  使用json方式创建对象

    通过json创建对象,对象有自己的属性(年龄、姓名、性别等)和行为(吃饭、睡觉、走路、讲课等)。

    推荐使用的场合: 作为函数的参数,临时只用一次的场景。比如设置函数原型对象。

    缺点: 不能作为对象创建的模板,也就是不能用new进行构造新对象。

// 定义
var obj = {};
var obj2 = { 
    name: 'laoma', 
    age: 18, 
    sayHi: function(){
        console.log( name + 'say hi' );
    }
};
//添加其他属性:
obj2.newProp = 123;// js的动态特性,如果没有要访问的属性,直接添加属性。

2  创建面向对象的方式new Object()

var obj3 = new Object();
//添加属性
obj3.name = 'kitty';
obj3.sayHi = function() {
    console.log( name + ' ' + 'say hi');
};

跟json方式创建对象的方式一样,只能临时用一下这个对象,不能作为对象创建的模板使用,因此不推荐使用

3 构造函数构造对象方法

把一个函数对象当做构造函数来使用,一般要把函数对象的首字母大写

3.1 方式一

function Persion() {
    this.name = '123'; // 通过this可以直接给 构造出来的对象添加属性。
    this.sayHi = function() {
        console.log( this.name );
    };
}   

Persion.prototype.sayHello = function(){
    console.log('123');
}

var p  = new Persion();

    使用方式一,对象的内部的函数会在每个对象中都存一份。如果创建的对象非常多的话,那么非常浪费内存。函数的行为是所有对象。可以共有,不需要每个对象都保存一份。所以,可以把函数放到原型中。进行声明,那么所有对象都有了公共的函数,而且内存中只保留一份。

3.2 方式二

function Persion(sname, sage) {
    this.name = sname || '123';
    this.age = sage || 19;
}
Persion.prototype = {
    sayHi: function() {

    },
    _init: function() {

    }
};

    使用方式二,调用者如果传递参数的顺序发生变化,那么该方式不方便维护。

3.3 方式三

function Persion( option ) {  //我用一个对象把所有参数覆盖。灵活性就很强了。
                             //顺序无所谓,添加参数也无所谓了。
    this._init( option );
}
Persion.prototype = {
    sayHi: function() {

    },
    _init: function( option ) {
        this.name  = option.sname || '';
        this.age = option.sage || 18;
    }
};

   构造函数构造对象时,推荐使用,方式三。私有的需要给外部访问的方法,建议使用"_"进行区分。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丨Anna丨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值