创建对象的四种方式
new Object()
对象字面量的方式
工厂函数的方式
构造函数创建对象
1、new Object
var obj = new Object();
console.log(obj)
//结果是一个空对象 {}
//给对象添加属性
obj.a=1;
console.log(obj)
//结果 {a: 1}
2. 对象字面量的方式
var obj = {};
//这样可以快速的创建一个空对象
var obj ={
a:1,
b:2
}
//也可以在创建的时候,直接在里面添加属性
3、工厂函数创建对象
原理:把创建的对象给封装起来
function creatPerson(name,age){
var obj = {
name:name,
age:age
sayHi:function(){
console.log("hello")
}
}
}
return obj; //将创建的对象返回出去
//调用函数
var ret = createPerson(“小前”,18);
console.log(ret);
var abs = createPerson("小五",20);
console.log(abs)
工厂函数可以实现重复调用同一个函数,通过传参的方式,创建出不同的对象
4、构造函数创建对象
定义一个构造函数:函数名首字母大写,配合new操作符使用
function Person(name,age){
this.name = name;
this.age = age;
}
this.sayHi = function(){
cons.log('hello 我是'+this.name)
}
var p = new Person('小前',20);//实例的属性
console.log(p);
p.sayHi(); //实例的方法
构造函数创建对象存在一个问题:内存浪费
在创建构造函数的时候new操作符做了啥?
- 在内存中开辟一段内存空间
- 创建了一个新的对象
- 把函数内的this指向新对象
- 指向了构造函数
- 返回了新对象
开辟的内存空间只要不删除,就是一直存在,所以会造成内存浪费。
通过构造函数创建出来的对象,叫做实例(实例对象),一个构造函数可以有多个实例对象,上面创建出来的对象P也就是实例,对象的属性和方法也叫做成员。