【对象】——创建对象
2016-04-15 22:52
204 查看
对象是一种复合值,它将很多值聚合在一起,可以通过名字来访问这些值
对象也可以看做是属性的无序集合,每个属性都是一个键/值对,属性名是字符串
在javascript中,除了字符串、数字、true、false、null、和undefined之外,其他的值都是对象
我总结了三种创建对象的方式
——通过对象直接量创建
对象直接量是是由若干键/值对组成的映射表,键/值中间用冒号分隔键/值之间用逗号分隔
——关键字new创建
new运算符创建并初始化一个新对象,关键字new后跟随一个函数调用,这个函数叫做构造函数,构造函数用于初始化一个新创建的对象
——通过函数Object.create()创建
这是一个ECMAScript5方法,早期浏览器可能不支持,不过主流的浏览器都是支持了的
Object.create( )有个参数——要创建对象的原型
Object.create()是一个静态函数,不给任何对象调用 只需要传入参数就可以使用
可以通过传入参数null来创建一个没有原型的对象,但是通过传入null方式创建的对象不会继承任何基本方法,包括toString()
如果想创建一个具有基本方法的空对象,可以像这样干
下面写一个用于创建有原型的对象的工具函数,考虑了兼容性
如果给继承对象的属性赋值,则这些对象的属性值会影响继承对象的本身,而不会影响原型对象
对象也可以看做是属性的无序集合,每个属性都是一个键/值对,属性名是字符串
在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; }
如果给继承对象的属性赋值,则这些对象的属性值会影响继承对象的本身,而不会影响原型对象
相关文章推荐
- Bellman-Ford(单源最短路径,判断是否有负权环路)
- opencv各个lib库的作用
- jquery插件
- NSObject的hash方法
- [android] 手机卫士接收短信指令执行相应操作
- selenium结合autoit3实现文件上传及下载
- Android获取网络资源
- 面试路之算法总结(1)
- POJ 2186 —— Popular Cows
- 问题处理之detectMultiScale函数objects返回值异常
- C++/C代码规范(个人)(不断更新)
- C++第二次实验补充
- js去除字符串中所有html标签及 符号
- 4月15日作业重点及点评
- Node.js学习 - Express
- Node.js学习 - Web Server
- Opencv之摄像头人脸识别
- 理解jquery的$.extend()、$.fn和$.fn.extend()
- POI之Excel单元格样式
- UVA 1153 Keep the Customer Satisfied 顾客是上帝 经典贪心 (SWE 2005)