js基础-18-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);

猜你喜欢

转载自blog.csdn.net/weixin_42349568/article/details/109015028