一、引言
前面我们介绍了有关于内置对象的很多很多的API,讲道理得话如果想彻底的掌握那一定要经过一定的代码段沉淀下。大家可以想象一下,既然在程序中有很多的内置对象供我们使用,那我们是不是也可以定义一些对象作为我们自己的特用对象呢?答案肯定是可以的。
二、导入
在工作中根据内容需求不同我们可以定义不同的对象来实现我们自己想要的功能。
三、重点内容
① 自定义对象的概念:
在工作当中,有时我们需要多次的定义不同事物的不同属性。这个时候为了方便我们就有了对象把他们封装起来。那么对象是什么呢?。它是一个无序数组的集合,你可以把它当做是你的旅行包,里面装着你的衣服、钱包、手机等的物品。对象可以帮我们封装一些数据,方便我们在程序中的传输或者是控制。我们把在对象中封装的内容就把这些叫做是属性或者方法。
属性:事物具有的特征
方法:事物具有的行为
② 自定义对象的创建方式:
1.创建自定义对象:
var student = new Object(); //创建了一个学生的空对象 // 属性(特征,姓名,性别,年龄,手机号,家庭)和方法(打招呼,游泳,打球) student.name = "张三"; student.sex = "男"; student.age = 20; student.sayHi = function (){ console.log("我叫"+student.name+",我今年"+student.age+",我是"+student.sex+"生"); };
虽然这样做是没有错误的,但是如果说是要储存一个班的人的信息呢?我们需要一个方式批量创建。
2. 利用函数批量的创建对象
function createStudent(name,age,sex){ var student = new Object();// 用构造函数的方式创建了一个空对象并返回 student.name =name; student.age = age; student.sex= sex; student.sayHi= function(){ console.log("我叫"+student.name+",我今年"+student.age+",我是"+student.sex+"生"); }; return student;//将这个对象返回 } var zs = createStudent("张三",25,"男"); zs.sayHi(); var ls = createStudent("李四",26,"男"); ls.sayHi(); var zs1 = createStudent("赵四",28,"男"); zs1.sayHi();
这样子我们就可以批量的穿件对象了,但是在上面的代码中我们发现 var student = new Object();// 用构造函数的方式创建了一个空对象并返回 return student;//将这个对象返回 这两句是不必须的,所以我们用下面的方法。
3.构造函数创建对象
function Student(name,sex,age){ //首字母大写,标明是一个函数,但是是构造函数,用来创建对象 //var this = new Object(); this.name = name; // this指代当前创建出来的出来 this.age=age; this.sex = sex; this.sayHi = function(){ console.log("我叫"+this.name+",我今年"+this.age+",我是"+this.sex+"生"); }; //return student(); // return this; } var ls = new Student("李四","男",25); // 构造函数可以创建对象并返回 ls.sayHi(); var xm = new Student("小明","男",12); xm.sayHi(); //谁调用,this就指代谁,始终指向当前对象
在这里面我们需要关注两个关注的关键字new与this
new在构造函数的时候做了以下的4件事
a ) 创建一个空的对象。
b )将this指针指向这个对象。
c )将构造函数里面的代码,给当前空对象this设置属性和方法。
d )将this这个当前这个对象返回。
this
在JS中,通过构造函数创建出来的对象 ,在调用方法的时候,this指代当前对象。
谁调用方法,this指代谁,都是指代当前对象。
我知道关于这两个关键字肯定还有更深层的解释,不过这是基础先掌握后面再深入。
4.对象字面量创建对象
var o = { // 对象字面量 name:"张三", age:20, address:"上海市", sex:"男", sayHi:function(){ console.log("大家好,我的名字是:"+ this.name+",我的年龄是:"+ this.age+",我是"+ this.sex+"生"); } }; o.sayHi();
四、总结
今天的内容有些多,需要记忆的内容要求很大。希望大家可以多多记忆。