js中创建对象的几种方式

1、字面量方式创建,也就是我们所常说的基本创建方式

    但是这个方式有一个缺点,就是要创建多个对象的时候,需要每一个对象里面的属性都要重新声明一下,直接向中添加属性和方法,这样就造成了代码的冗余,而且这样创建对象的话,也必须先知道对象的属性和方法,否则无法创建;

var object = new Object();
object.name='lili';
//向对象中添加属性和方法
object.sayName =function(name){
	this.name  = name;
}
object.sayName('wawa');
alert(object.name);
//意思一样
var object ={
	name:'lili',
	sayName:function(name){
		console.log(this);
		this.name=name;
	}
}

2、工厂模式创建对象

    这种方法创建对象可以大批量的创建,通过函数返回一个对象的方式创建对象,并且对象的属性都是一样的,有点像工厂的流水线,一成不变的,所以一般我们叫这种方式为工厂模式。这种方式的缺点是无法知道对象的类型。

function creatObject(name,gender){
	var object ={
		name:name,
		gender:gender,
		find:function(){
			console.log(this.name+','+this.gender);
		}
	}
	return object;
}
var object1 = creatObject('lisi',15); 
var object2 = creatObject('zhasgan',18); 
object1.find();//lisi,15
object2.find();//zhasgan,18

3、构造模式创建对象(开头字母一般大写)

    这种方法创建对象创建的每一个对象的类型不同,缺点就是每一个对象的方法都确定了,无法更改,智能通过修改构造函数进行修改。

function CreateObject(name,gender){
	this.name = name;
	this.gender = gender;
	this.find=function(){
		console.log(this.name+','+this.gender);
	}
}
var obj1 = new CreateObject('lili',14);
var obj2 = new CreateObject('wawa',15);
obj1.find(); //lili,14
obj2.find();//wawa,15

4、原型模式创建对象

    原型模式创建的所有对象实例都会共享他们的属性和方法,但是也可以根据不同对象的需要给对象的属性进行覆盖,这样就可以实现自定的其他对象的属性。

function Person(){}
Person.prototype.name="a";
Person.prototype.age="29";
Person.prototype.job="cc";
Person.prototype.sayname = function(){
        alert(this.name);
};
var person1 = new Person();
var person2 = new Person();
console.log(person1)//{}
console.log(person1.name)//a

5、原型模式和构造函数模式结合创建对象

    

function Student(name,gender){
	this.name = name;
	this.gender = gender;
}
Student.prototype.find=function(){
	console.log(this.name);
}
var p1=new Student('lili',12);
var p2=new Student('wawa',13);

这样两种方式结合创建的对象的方式保证每个对象都有自己的属性和方法。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值