您的位置:首页 > 其它

【对象】——创建对象

2016-04-15 22:52 204 查看
对象是一种复合值,它将很多值聚合在一起,可以通过名字来访问这些值

对象也可以看做是属性的无序集合,每个属性都是一个键/值对,属性名是字符串

在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;
}


如果给继承对象的属性赋值,则这些对象的属性值会影响继承对象的本身,而不会影响原型对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: