JavaScript之对象、构造函数、包装类

创建对象的方法

  1. 对象字面量
  2. 构造函数
  3. Object.create()

对象字面量:

var obj = {};
//对象中的属性之间用逗号分隔

构造函数:

  • 系统自带的构造函数
var obj = new Object();
//系统自带的构造函数有很多,如Number(),String(),Boolean(),Array()
  • 自定义的构造函数

其中自定义的构造函数也是正常的函数,为了区分他和正常的函数,将构造函数的首字母大写。

function Person() {}

有了构造函数之后,就可以通过new操作符来创建对象了。

var oPerson = new Person();

另外,构造函数既然是函数,就可以传参数

function Person (name, age) {
    this.name = name;
    this.age = age;
}

var p = new Person('zhangsan',18);
console.log(p.name); // 这里将打印出zhangsan

为什么通过new操作符可以创建互相独立的对象呢
原因很简单,就是当我们用new操作符创建对象的时候,会隐式的在构造函数里创建一个this对象,而且最终返回的也是这个this对象。

例如:

function Person(age) {
    // var this = {};
    this.age = age;
    //return this;
}

注意:如果最后自己手动返回我们创建的对象,那么将不会在默认的隐式返回this对象了,如:

function Person (name) {
    var that = {
        name : 'zhangsan'
    }
    this.name = name;
    return that;
}

var oPerson = new Person('lisi');
console.log(oPerson.name); // 这里返回的是'zhangsan',因为我们手动返回的that使得不会隐式的返回this对象了

但是如果我们返回的是不可改变得原始值,而不是对象,那么还是会自动的隐式返回this的,这里我就不做测试啦。

对象属性的增删改查

  1. 对象名.属性名 = 要添加的属性值

    function fun(){
        this.name = 'mm';
    }

    var obj = new fun();

    console.log(obj.name);//mm

    delete obj.name;

    console.log(obj.name); //undefined
  1. 对象名.属性名 = 要添加的属性值

  2. 对象名.属性名

包装类

    var str = 'abcd';
    console.log(str.length); // 4

大家可能对上述代码有一点疑问,string类型明明就是原始值,怎么会有属性呢?

这是因为,在调度str.length这一行代码之前,程序会自动把str包装成一个字符串对象,在这一行代码执行完之后再销毁这个字符串对象。

所以当我们在执行str.length = 2;这句话之后,再打印str.length还是4

其他类型的数据也是一样的,当我们给原始值加属性的时候,都是先隐式包装成对象,然后赋属性值之后在销毁这个对象;

==主页传送门==

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值