对象:特指的某个事物,具有属性和方法(一组无序的属性的集合)
特征---->属性
行为---->方法
小苏:------>姓名,性别,年龄,吃,睡觉,玩
创建对象几种方式:
1 字面量的方式
//实例对象
var per1={
name:"卡卡西",
age:20,
sex:"男",
eat:function () {
console.log("吃臭豆腐");
},
play:function () {
console.log("玩老鼠");
}
};
2 调用系统的构造函数
//调用系统的构造函数
var per2=new Object();
per2.name="大蛇丸";
per2.age=30;
per2.sex="男";
per2.eat=function () {
console.log("吃榴莲");
};
per2.play=function () {
console.log("这个小蛇真好玩");
};
function Person() {
}
3 工厂模式创建对象
function createObject(name,age) {//创建对象
var obj=new Object();
obj.name=name;
obj.age=age;
obj.sayHi=function () {
console.log("您好");
};
return obj;
}
//实例化一个对象,的同时对属性进行初始化
var per2=createObject("小明",20);
4 自定义构造函数方式创建对象
//自定义构造函数
function Person(name,age,sex) {
this.name=name;
this.age=age;
this.sex=sex;
this.play=function () {
console.log("天天打游戏");
};
}
//创建对象---->实例化一个对象,的同时对属性进行初始化
var per=new Person("东方不败",18,"女");
console.log(per instanceof Person);//判断类型
创建过程:
* 1.开辟空间存储对象
* 2.把this设置为当前的对象
* 3.设置属性和方法的值
* 4.把this对象返回
共同点:都是函数,都可以创建对象,都可以传入参数 | |
工厂模式: | 自定义构造函数: |
1 函数名是小写 | 1 函数名是大写(首字母) |
2 有new, | 2 没有new |
3 有返回值 | 3 没有返回值 |
4 new之后的对象是当前的对象 | 4 this是当前的对象 |
5 直接调用函数就可以创建对象 | 5 通过new的方式来创建对象 |
总结:以后一般用自定义构造函数的方式创建对象
实例对象和构造函数之间的关系:
1. 实例对象是通过构造函数来创建的---创建的过程叫实例化
2.如何判断对象是不是这个数据类型?
1) 通过构造器的方式 实例对象.构造器==构造函数名字
//实例对象的构造器(构造函数)
//实例对象的构造器是指向Person的,结果是true,所以,这个实例对象per就是通过Person来创建的
console.log(per.constructor==Person);//
2) 对象 instanceof 构造函数名字
console.log(per instanceof Person);//true表示是
!!!尽可能的使用第二种方式来识别(原因会在原型中提及)