初识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()作用一样

猜你喜欢

转载自blog.csdn.net/qq_38341456/article/details/82982169