一、什么是对象?
对象是一组无序的相关属性和方法的集合,也就是存储数据的集合。 对象是由属性和方法组成的。
二、定义对象的三种方式
2.1 字面量定义对象
- 对象里面的数据单元 采用 键名:键值 或 属性:属性值 的语法形式存储
- 多个数据单元中间用逗号隔开
//name就是obj对象的键名/属性,'王昭没有君啊'是值、属性值 //fn是一个方法,冒号后面是一个匿名函数 var obj = {name:'王昭没有君啊',sex:'男',age:'**', fn:function(){ console.log('正在努力写博客'); } };
调用对象的属性的方法:
(1)对象.属性
不支持数字键名,不支持解析变量
(2)对象['属性']
支持数字键名,支持解析变量
调用对象的方法
** **对象.方法名()
var obj = {name:'王昭没有君啊',sex:'男',age:'**', fn:function(){ console.log('正在努力写博客'); } }; console.log(obj); console.log(obj.name); console.log(obj['name']); obj.fn();
执行结果:
变量、属性,函数、方法的区别:
** **相同点:变量、属性,他们都是用来存储数据的
不同点:
变量:单独声明并赋值 使用的时候直接写变量名 单独存在 属性:在对象里面不需要声明 使用的时候必须是 对象.属性 或 对象['属性']
不同点:函数、方法,都是实现某种功能的
函数:单独声明 调用的 函数名()是单独存在的 方法:是在对象里面的 调用方式: 对象.方法(); 用来描述对象的行为和功能
2.2 new Object定义对象
- 利用 = 赋值 添加对象的属性和方法
- 每个属性、方法之间用分号结束
var obj = new Object(); obj.name = '王昭没有君啊'; obj.sex = '男'; obj.age = '**'; obj.fn = function() { console.log('正在努力写博客'); } console.log(obj.name); console.log(obj['sex']); obj.fn(); console.log(obj);
执行结果:
2.3 构造函数定义对象
构造函数的语法格式
function 构造函数名() {
** this.属性 = 属性值;**
** this.方法 = function() {}**
}
注意:
前面两种方法定义对象一次只能定义一个对象,如果对象里面的很多 属性和方法 和另一个对象大部分是相同的,一般我们只能进行复制粘贴到另一个对象里,这样写是可以的,但是就显得略微粗糙,怎么办呢,那么我们就可以利用 函数的方法 去重复这些相同的代码,这个函数就称为 **构造函数**,这个函数封装的不是普通的代码,而是封装的对象,它呢,其实就是把对象里面的一些 相同的 属性和方法 抽象 出来 封装到函数里面。
通过new关键字创建对象的过程 就是 对象实例化。
function Person(name,num,sex) { //构造函数名首字母需要大写 this.name = name; this.age = num; this.sex = sex; this.fn = function (grade) { console.log(grade); } } //调用构造函数不需要return 就可以返回结果 //调用构造函数 必须使用 new //使用 new Person()调用函数 就可以定义一个对象 var protagonist = new Person('叶天帝', 24, '男'); console.log(protagonist.name); console.log(protagonist.age); console.log(protagonist.sex); protagonist.fn('红尘仙'); var fristProtagonist = new Person('荒天帝', 30, '男'); console.log(fristProtagonist.name); console.log(fristProtagonist.age); console.log(fristProtagonist.sex); protagonist.fn('红尘仙');
执行结果:
构造函数和对象的区别:
构造函数:泛指的某一大类
对象:特指某一个具体的事物
三、对象的基本操作
定义一个对象:
var obj = {name:'王昭没有君啊',sex:'男',age:'**', fn:function(){ console.log('正在努力写博客'); } };
执行结果:
然后分别进行以下操作 :
**修改对象 **
对象是已经存在的
//修改 obj.name = '王昭君'; obj.sex = '女';
执行结果:
新增对象
对象是不存在的
//新增 obj.addr = '北京'; console.log(obj);
执行结果:
删除对象
格式一:
delete( 对象.属性 ) delete( 对象['属性'] )
格式二:
delete 对象.属性 delete 对象['属性'] 对象是已经存在的
//删除 delete(obj.sex); delete(obj['age']);
执行结果:
四、循环遍历对象
对象只能用 for...in 循环遍历
注:for...in 循环在我的另一篇文章 JavaScript数组相关知识 有详解
var obj = {name:'王昭没有君啊',sex:'男',age:'**'}; //循环遍历对象 for (var index in obj) { //index 存储的是obj对象的键名 console.log(index); //对象.属性不能解析变量 //这里必须使用 对象['属性'] 的方式,可以解析变量 console.log(obj[index]); }
执行结果:
版权归原作者 王昭没有君啊 所有, 如有侵权,请联系我们删除。