【对象】——创建对象

对象是一种复合值,它将很多值聚合在一起,可以通过名字来访问这些值
对象也可以看做是属性的无序集合,每个属性都是一个键/值对,属性名是字符串

在javascript中,除了字符串、数字、true、false、null、和undefined之外,其他的值都是对象

我总结了三种创建对象的方式

——通过对象直接量创建
对象直接量是是由若干键/值对组成的映射表,键/值中间用冒号分隔键/值之间用逗号分隔

var empty = {}; //没有任何元素的空对象
var point = {x:0,y:0}   //两个属性的对象
var point2 = {x:point.x,y:point.y}  //引用别的对象的属性作为值得对象
var book = {
    "main title":"javascript", //属性名有空格,必须用字符串表示
    "sub-title":"Then Definitive Guide",//属性名有连字符,必须用字符串表示
    "for":"all audiences", //“for”是保留字,必须用字符串表示
    author:{              //这个属性值是一个对象
        firstname:"David",
        surname:"Flanagan"
        }
}

——关键字new创建
new运算符创建并初始化一个新对象,关键字new后跟随一个函数调用,这个函数叫做构造函数,构造函数用于初始化一个新创建的对象

var o=new Object();     //创建一个新的空对象,相当于{}
var a= new Array();     //创建一个空数组,相当于[]
var d=new Date();       //创建一个当前时间的Date对象

——通过函数Object.create()创建
这是一个ECMAScript5方法,早期浏览器可能不支持,不过主流的浏览器都是支持了的
Object.create( )有个参数——要创建对象的原型

Object.create()是一个静态函数,不给任何对象调用 只需要传入参数就可以使用

var o=Object.create({x:1,y:2});
//新创建的o对象就继承了原型{x:1,y:2}对象
//所以o.x为1,o.y为2

可以通过传入参数null来创建一个没有原型的对象,但是通过传入null方式创建的对象不会继承任何基本方法,包括toString()

如果想创建一个具有基本方法的空对象,可以像这样干

var o = Object.create(Object.prototype);

下面写一个用于创建有原型的对象的工具函数,考虑了兼容性

function inherit(p){
    if(p == null) throw TypeError();
    if(Object.create) return Object.create(p);
    var t = typeof(p);
    if(t != "Object" || t !="function") 
        throw TypeError();
    function f(){};
    f.prototype = p;
    return new f;
}

如果给继承对象的属性赋值,则这些对象的属性值会影响继承对象的本身,而不会影响原型对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值