对象:特指某个事物,具有属性和方法
创建对象:实例化一个对象的同时对其属性进行初始化
1、字面量创建对象
var obj1={
name:"amethyst",
color:"blueviolet",
code(){
console.log('love coding');
}
}
console.log(obj1.color);//blueviolet
obj1.code();//love coding
2、调用系统的构造函数创建对象
var obj2=new Object();
obj2.name="lanlan";
obj2.color="pink";
obj2.eat=function(){
console.log('love eating');
}
console.log(obj2.name);//lanlan
obj2.eat();//love eating
3、自定义构造函数创建对象
function Person(name,age){
this.name=name;
this.age=age;
this.dream=function(){
console.log('go ahead');
}
}
var obj3=new Person('puppy',18);
console.log(obj3.name);//puppy
obj3.dream();//go ahead
4、工厂模式创建对象
function creatObject(name,hobby){
var obj=new Object();
obj.name=name;
obj.hobby=hobby;
obj.sleep=function(){
console.log('sleep all day');
};
return obj;
}
var obj4=creatObject('zhao','eating');
console.log(obj4.name);//zhao
obj4.sleep();//sleep all day
工厂模式创建对象和自定义构造函数创建对象都是函数,都可以传入参数,不同的是:
工厂模式函数名是小写,有new,new之后的对象是当前对象,有返回值,直接调用函数就可以创建对象;
自定义构造函数的函数名首字母大写,没有new,没有返回值,this是当前对象,通过new的方式来创建对象