/*
* JS中数据类型
* - string 字符串
* - number 数值
* - boolean 布尔值
* - null 空值
* - undefined 未定义
* - 以上这五种类型属于基本数据类型,以后看到的值只要不是上面的五种,那么全都是对象
* - object 对象
*
* 基本数据类型都是的那一的值。例如‘hello’ 、123、true,值和值之间没有任何的联系
*
* 在JS中表示一个人的信息,一般都是指名字、性别、年龄(name、gender、age)
* 一般创建的时候,是这么写的:
* var name = '张三';
* var gender = '男';
* var age = 18;
* 这样写是没毛病的,但是对于对象来说,它们就不是一个整体了,
* 这里说的整体是指一个对象中有一个或多个数据类型。
* 例如:一个购物车,一个手提袋,一个收纳盒,这些就是一个对象,在这个对象中放了很多东西,
* 例如:一个购物车里有面包、牛奶等等这些东西就是数据类型
* 购物车就是一个对象,面包、牛奶就是数据类型;
*
* 对象属于一中复合的数据类型,在对象中可以保存多个不同的数据类型的属性,
* 对象不仅可以保存不同的数据类型,同样的可以查询、修改、删除,也就是常说的增、删、改、查这四个功能。
*
* 对象的分类:
* 1.内建对象
* - 由ES标准中定义的对象,子啊任何的ES的实现中都可以使用
* - 比如:Math、string、Number、Boolean、Function、Object....
*
* 2.宿主对象
* - 由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
* - 比如:BOM、DOM
*
* 3.自定义对象
* - 由开发人员自己创建的对象
*
* 如何使用对象?
/
//使用对象第一步就是创建对象
/
* 前面的var obj 这是创建一个变量,这里不做过多解释,不明白自行百度
* 等号后面的 new 关键字使用与调用的函数,是构造函数的constructor
* 构建函数是专门创建对象的函数
* new关键字后面 Object() 就是对象方法
*/
var obj = new Object();
/*
* 通过打印来看看 obj 这个变量里有什么,这里不能贴图就不贴了,直接动手给你写出结果
* console.log(obj);
* 打印结果:Object { }
* 打印之后 obj 变量里什么都没有,那是因为还没有往里面添加上面所说的数据类型
*
* 然后,在打印一下类型,就是说在console.log(typeof obj);里添加 typeof 来打印 obj 变量的类型
* console.log(typeof obj);
* 打印结果:'Object' 或 Object
* 这里打印的结果根据浏览的要求会加 单引号或者没有单引号,直接是打印结果
* 那么打印的结果是 Object 这就是obj变量的类型,叫做对象
* 接下来就是往 obj 变量里添加数据类型
/
//打印结果
// console.log(obj);
//打印类型
// console.log(typeof obj);
/
* 在对象中保存的值成为属性
* 向对象添加属性
* 语法:
* 对象.属性名 = 属性值;
* 对象就是 obj ;属性名就是 name(属性名可以自定义);属性值就是给属性名设置一个数据类型(不知道数据类型就看上面)
* 添加属性的数量是根据实际的要求来定的,比如:姓名、年龄、性别、身高、体重等等,这些都可以当做属性添加到对象中;
*
* 下面通过例子来了解对象与属性:
*/
//由于上面已经创建好对象,所以直接添加属性
//添加一个姓名属性,name就是属性名,张帅就是属性值
obj.name = "张帅";
//添加一个性别属性,gender就是属性名,男就是属性值
obj.gender = '男';
//添加一个年龄属性,age就是属性名,20就是属性值
obj.age = 20;
//添加一个身高属性,height就是属性名,175就是属性值
obj.height = 175;
//添加一个体重属性,weight就是属性名,140就是属性值
obj.weight = 140;
//这时再次打印obj,看看这次的结果是什么
console.log(obj);
/*
* 打印的结果:
* 网页打印有两种格式:一种是横向的,一种纵向的;两种展示都是一个意思内容不变,不一样的是对象内部属性的排列
* 横向的是以你添加的顺序来排列的,而纵向是是以属性名的第一个字母来排列的
* 横向:
* Object { name: "张帅", gender: "男", age: 20, height: 175, weight: 140 }
* 纵向:
* Object {
* age: 20
* gender: "男"
* height: 175
* name: "张帅"
* weight: 140
* }
* 在对象中展示的属性是 属性名 :属性值;两个属性之间的区分是以‘,’逗号分隔的
* 属性之间的关系是属于同一个对象
*
* 这时,你会想我如何一个一个读取哪?
* 其实,也很好理解,上面是怎么添加的属性,这里就这么读取属性,就是对象加属性名就可以读取
* 读取对象中的属性:
* 语法:
* 对象.属性名
/
/
* 打印单个属性名
* 打印结果:
* 张帅 或者 '张帅'
*
* 在读取属性时,如果写错了,并不会报错。
* 读取属性必须是对象中有的属性,没有的属性打印结果是 undefined
/
// console.log(obj.name);
// console.log(obj.gender);
// console.log(obj.age);
// console.log(obj.height);
// console.log(obj.weight);
/
* 既然能读取是否可以修改属性值哪?
* 答案是肯定的,可以修改,修改的方法和上面设置属性值样的,只不过是
* 从新设置了属性值;
* 修改属性如下:
*/
obj.name = '李四';
/*
* 修改其中一个属性值后,其他的属性值不变,
* 打印修改过的属性:
* Object { name: "李四", gender: "男", age: 20, height: 175, weight: 140 }
*
* 这里只修改了 name 所以只有 name 的值改变了,之前name值是 张帅,经过修改现在的 name的值是李四
*
* 修改是一定要在属性名初始化设置之后,比如:张帅是初始化设置的,那么修改的时候就需要在张帅的下面从
* 新设置,这种情况只有在特定的需求下才会需要。也是使用非常多的,比如修改会员姓名、修改电话、修改地址。
*
* 如果想要知道对象内有几个属性可以在使用 Object.getOwnPropertyNames(obj).length ,也就是在
* console.log(Object.getOwnPropertyNames(obj).length);里加上这个就行
*/
console.log(obj);
/*
* 既然修改也可以,那可不可以删除属性?
* 答案也是肯定的,增、删、改、查,前面已经写了增、改、查,就差这个删
*
* 删除对象的属性:
* 语法:
* delete 对象.属性名;
*/
delete obj.name;
/*
* 打印删除对象的属性
* 删除后打印的结果是 undefined,如果在项目中对象出现这个undefined有两种情况:
* 一、那就是没有这个属性名。
* 二、那就是已经删除。
*
* 打印结果:
* Object { gender: "男", age: 20, height: 175, weight: 140 }
* 这里可以看出 name属性已经没有了,这说明name属性已经被删除
*/
//打印被删除的属性
console.log(obj.name);
//打印整体
console.log(obj);
网友评论