2、创建对象的三种方式
2.1利用字面量创建对象
对象字面量:就是花括号{}里面包含了表达这个具体事物()的属性和方法
//1.利用对象字面量创建对象() var obj = { uname:'张三丰', age:18; sex:'男' sayhi:function(){ console.log('hi~') } } //(1)里面的属性或者方法我们采取键值对的形式 键 属性值: 值 属性值 //(2)多个属性或者方法中间用逗号隔开 //(3)方法冒号后面跟的是一个匿名函数 //2.使用对象 //(1)调用对象的属性 我们采取 对象名.属性名 ,我们理解为 的 console.log(obj.uname); //(2)、调用属性还有一种方法 对象名['属性名'] console.log(obj['age']); //(3)调用对象的方法 saayhi 对象名.方法名() 千万不要忘记添加小括号 obj.sayhi();
var num 10; var obj = { age: 10; fn:function)(){ } } function fn(){ } console.log(obj.age); //console.log(age);
总结:变量、属性、函数、方法的区别
1、变量和属性是相同的,它们都是储存数据的。变量单独使用并赋值,使用的时候直接写变量名,单独存在。属性,在对象里面不需要单独声明,使用的时候必须是 对象.属性。
2、函数和方法的相同点,它们都是实现某种功能,做某件事,函数单独声明,并且调用的,函数名(),单独存在。方法,在对象里面,调用的时候,对象.方法()
2.2利用new Object创建对象
var obj = new Object(); //创建一个空的对象 obj.uname = '张三丰'; obj.age = '张三丰''; obj.sex = '男'; obj.sayhi = function(){ console.log('hi~'); } //(1)我们利用 等号 = 赋值的方法 添加对象的属性和方法 //(2)每个属性和方法之间用分号结束 console.log(obj.uname); console.log(objp['sex']) obj.sayhi();
2.3利用构造函数创建对象
构造函数:是一种特殊的函数,主要用来初始化对象,即为对象成员变量的初始值,它总与new运算符一起使用,我们可以把对象中一些公共属性和方法抽取出来。
//为啥要用构造函数来创建对象 var ldh = { uname: '刘德华', age: 55, sing: function(){ console.log('冰雨'); } } var zxy = { uname: '张学友', age: 58, sing: function(){ console.log('李香兰') } } //因为我们每创建一次对象,里面的很多属性和方法都是相同的,我们只能复制到 //因此我们可以利用函数的方法 重复这些相同的代码,我们把这个函数称为构造函数 //又因为这个函数不一样,里面封装的不是普通代码,而是对象 //构造函数,就是把我们对象里面一些相同的属性和方法抽出来封装到函数里面
//抽取相同属性的代码块 //构造函数的语法格式 function 构造函数名(){ this.属性 = 值; this.方法 = function(){ } } //new 构造函数名(); function Star(uname,age,sex){ this.name = uname; this.age = age; this.sex = sex; this.sing = function(sang){ console.log(sang); } } var ldh = new Star('刘德华',18,'男');//调用函数方会是一个对象 //console.log(typeof ldh); console.log(ldh.name); console.log(ldh['sex']); ldh.sing('冰雨'); var zxy = new Star('张学友',78,'男'); //1、构造函数首字母要大写 //2、我们构造数不需要return 就可以返回结果 //3、我们调用函数必须使用 new //4、我们只要new Star() 调用函数就是创建了一个对象 //5、我们的属性和方法前面必须添加this function hero(name,type,blood,attack){ this.name = name; this.type = type; this.blood = blood; this.attack = attack; this.hit = function(hit){ console.log(hit); } } var lianpo = new hero('lianpo','力量型','100血量','近战'); console.log(lianpo.name); console.log('廉颇打后羿');
2.4构造函数和对象
//1、构造函数泛指一大类 明星 类似java里面的类 function hero(name,type,blood,attack){ this.name = name; this.type = type; this.blood = blood; this.attack = attack; this.hit = function(hit){ console.log(hit); } } //2、对象是一个具体的事物 刘德华 == (name:"刘德华",age:18, sex:'男',sing:) var lianpo = new hero('lianpo','力量型','100血量','近战'); //3、我们利用构造函数创建对象的过程我们也称为实例化
3. new关键字
new关键字的执行过程
//1、new 构造函数可以在内存中创建一个空的对象 //2、this 就会指向刚才的空对象 //3、执行构造函数里面的代码 给这个空对象添加属性和方法 //4、返回这个对象
遍历对象
//遍历对象 var obj = { name : 'pink老师'; age: 18; sex:'男'; } console.log(obj.name); console.log(obj.age); console.log(obj.sex);
for...in 遍历
//遍历对象 var obj = { name : 'pink老师'; age: 18; sex:'男'; } //console.log(obj.name); //console.log(obj.age); //console.log(obj.sex); for(var k in obj){ console.log(k);//k 变量 输出 得到的是 属性值 console,log(obj[k]); } //我们使用for in里面的变量 k
小结
1、对象可以让代码块更加简单
2、对象复杂数据类型object
3、本质:对象是一组无序的相关属性和方法的集合
4、构造函数泛指一大类,比如苹果,不管是什么颜色的苹果都是苹果
5、对象实例特指一个事物,比如这个苹果
6、for...in 语句用于对象的属性进行循环操作