初识JavaScript对象--创建对象
在javascript中,有string,number,boolean,null,undefined这五种基本数据类型,虽然这五种数据类型基本上可以囊括大多数的数据表示,但是由于值的类型比较单一,值与值之间没有联系,这一点不符合js基于对象的特点,所以将Object这一引用数据类型加入是非常有必要的。
对象:是一种复合的数据类型,在对象中可以保存多个不同数据类型的变量(封装)
- 对象的分类
. 内置对象(也叫内建对象):是由ECMAScript规范定义的对象和类,是可以不用创建而直接使用的。
eg: Math,String,Array,Date.....
· 宿主对象:由JavaScript运行环境(比如WEB浏览器)所提供的,
eg: BOM下的window 、DOM下的document。 (JS=ECMAScript+BOM+DOM)
. 自定义对象:开发人员自定义的对象,运行中js代码进行创建。
- 创建对象
创建对象的三种方法:
1.对象直接量。
创建对象最简单直接的方法,语法规则如下:
var 对象名 ={属性名:属性值 ,属性名:属性值..... }; (注意最后面的;不可省略)
对象直接量是由若干名值对组成的映射表,名/值对中间用:分隔,多个名值对之间用 ,分隔。对象的属性名并不强制要求遵循标识符命名规范,也就是说可以任意命名,(类似“#¥%……@%”这样的命名也可以通过并且运行)但是为了提高代码的可读性和复用性,不提倡这样命名,对于属性值来说,属性值可以是任意的数据类型。请看几组例题:
var empty={}; //创建一个空对象
//创建对象的同时添加属性,
var person={name:"小明", age:18}; //当属性值不是按照规范命名的则必须加引号
var book={
"major book" :"javascript", //属性名中有空格必须用引号
"second-book" :"servlet" //属性名中有连字符必须用引号
};
2.通过new关键字创建对象
相信大多数学过C,java的人已经很熟悉new运算符了,new运算符用来创建并初始化一个新对象,语法规则如下:
var obj =new Object();
obj为变量名,可以根据规范自定义命名,Object()是一个构造函数,用以初始化一个新创建的对象。
增:obj.属性名="属性值"; 保存在对象中的值为对象的属性。
改:因为js语句是自上而下执行的,所以对属性值的修改可以通过覆盖原来的值来完成。
查:console.log(obj.属性名);对象名.属性名用来获取属性值
对数据的操作一般是增,删,改,查。 增,改,查我们前面都实现了那么删除数据应该怎么操作呢?
删:delete 对象名.属性名;
var obj = new Object(); //创建一个空对象 相当于 var obj={};
var arr = new Array(); //创建一个空数组 想当于 var arr=[];
var obj2 = new Object();
obj2.name="小明"; //为obj2对象添加属性name
obj2.age=18; //为obj2对象添加属性age
obj2.name="小红"; //修改obj2中name的属性值为小红
console.log(obj2.age); //控制台输出 18
delete obj2.name; //删除obj2中的name属性名和值
在这里需要注意的是查,因为js解释器对属性名的命名不做严格规范,所以就会导致以下这种问题:
当创建对象时的属性名不是按照规范命名的,那么通过对象名.属性名这种方法是取不到属性值的。
var obj =new Object();
obj["123"]=789; //特殊命名只能按照这种方法赋值
console.log(obj["123"]); //特殊命名只能按照这种方法取值
console.log(obj.123); //这种方法是无效的
另外,当访问对象中没有的属性名,结果不会报错,而会返回undefined。
3.Object.create()
这种方法就很少用到了,相比于前两种来说较为繁琐,语法结构如下:
var obj =Object.create(对象的原型);
var o1= Object.create({x:1;y:2}); //o1继承了属性x和y
var o2 =Object.create(object.prototype); //o2和 new Object()作用一样
上一篇: 如何降低直播延时
下一篇: iOS 直播技术及Demo