★文章内容学习来源:拉勾教育大前端就业集训营
本篇学习目标:
1.掌握对象的创建和使用方法。
对象是一个具体的事物
,一个具体的事物就会有行为和特征。举例:一个手机、一辆车、一个水杯、一盆花都是都是一
类
事物;
只有够具体时才是具体的对象,比如“你身前桌子上的手机”是对象
;
特征:糖果纸色手机后背、华为品牌、四个摄像头;
行为:亮屏、听音乐、拍照片等等;
{ }
k: 属性名
v:属性值,可以是任意类型的数据,比如简单类型数据、函数、对象。
var obj = {
k: v,
k: v,
k: v
};
var person = {
name: 'zs', //特征-属性
age: 18, //特征-属性
sex: true,//特征-属性
sayHi: function () {
//行为-方法(函数)
console.log("你好");
}
};
①用对象的变量名打点调用某个属性名,得到属性值。
//(1)变量名打点调用某属性名得到属性值
console.log(person.name); //zs
console.log(person.age); //18
console.log(person.sex); //true
②用对象的变量名后面加 [ ] 调用,[ ] 内部是字符串格式的属性名。
//(2)变量名后加[],[]中是字符串格式的属性名
console.log(person["name"]);//zs
console.log(person["age"]);//18
console.log(person["sex"]);//true
③调用方法时,在以上两种方式基础上还需要在方法名后加 () 执行。
//(3)调用方法:变量名打点调用方法名后加()
person.sayHi(); //你好
person["sayHi"]();//你好
//二、在对象内部部调用
var person = {
name: 'zs', //特征-属性
age: 18, //特征-属性
sex: true,//特征-属性
sayHi: function () {
//行为-方法(函数)
//在对象内部部调用
console.log(this.name +"向你说'你好'");
}
};
person.sayHi(); //zs向你说'你好'
//先调用属性,再等号赋值
person.age = 19;
//验证一下是否更换
console.log(person.age); //19
//增加新的
//使用点语法或者[ ]方法直接定义新属性,等号赋值
person.height = 180 ;
// 或者
/// person["height"] = 180;
//验证一下是否增加成功
console.log(person.height); //180
delete
关键字,空格后面加属性调用。//delete空格属性调用
delete person.sayHi;
delete person.height;
//验证一下是否成功
console.log(person);
认识了解即可,还是推荐字面量方式创建对象。
因为这种方法比较麻烦,如果要创建很多类似对象,要重复写代码。
Object()
构造函数,是一种特殊的函数;new
运算符一起使用在创建对象的语句中。new
一起使用才有意义。// new Objest() 构造函数
var person2 = new Object(); //创建一个新的空对象
//增加一些属性、方法
person2.name = "李四";
person2.sex = false;
person2.height = 170;
person2.sayHi = function () {
console.log("hello");
}
//输出
console.log(person2);
this
指向这个新的对象;//工厂函数的方法相当于对 new Object()方法的封装
function createPerson (name,sex,height) {
//创建一个空对象
var person = new Object();
//添加属性和方法,属性可以接收参数的值
person.name = name;
person.sex = sex;
person.height = height;
person.sayHi = function () {
console.log("hello");
};
//将对象作为函数的返回值
return person;
}
//想创建一个对象,可以调用工厂函数
var p1 = createPerson ("王二","true","185");
//验证输出
console.log(p1);
p1.sayHi(); //调用方法
var p2 = createPerson ("张三","true","190");
//验证输出
console.log(p2);
p2.sayHi();//调用方法
这个创建对象的很重要!和用字面量创建一样重要!
因为比工厂方法更加简单!
this
代替对象进行属性和方法的书写;return
一个返回值,使用时,利用 new
关键字调用自定义的构造函数即可。因为用new调用时,new 会在内存中创建一个新的空对象。//自定义构造函数
function Person(name,age,sex,height) {
//不用new Object()一个空对象了,用this
this.name = name;
this.age = age;
this.sex = sex;
this.height = height;
this.sayHi = function () {
console.log("hello");
};
//不用添加return,调用时用new调用即可
}
var p1 = new Person("赵六",18,false,165);
//验证一下
console.log(p1);
p1.sayHi();
var p2 = new Person("李力",16,true,150);
//验证一下
console.log(p2);
p2.sayHi();
for in
循环也是循环的一种,专门用来遍历对象,内部会定义一个 k
变量, k
变量在每次循环时会从第一个开始接收属性名,一直接收到最后一条属性名,执行完后跳出循环;// 循环遍历输出每一项
for(var k in obj){
console.log(k + "项的属性值是" + obj[k]);
}
//自定义构造函数
function Person(name,age,sex,height) {
//不用new Object()一个空对象了,用this
this.name = name;
this.age = age;
this.sex = sex;
this.height = height;
this.sayHi = function () {
console.log("hello");
};
//不用添加return,调用时用new调用即可
}
var p1 = new Person("赵六",18,false,165);
// 循环遍历输出每一项
for (var k in p1) {
console.log(k+"项的属性值是"+p1[k]);
}
下篇继续:【75】JS(7)——对象②简单类型复杂类型