1.工厂函数
工厂函数有返回值return,并且命名为首字母小写,函数体中内容为返回对象:
在函数中生成对象---->返回对象------->调用函数创建新对象
function createObj(){
var obj=new Object() // Object 为构造器函数 或者直接写 var obj={ },生成一个对象
obj.name='xxx';
obj.age=18
return obj //返回声明的obj
}
const newobj=createObj() //直接调用函数即可生成对象
2.构造函数-------原理就是创建了一个直接添加完成属性和方法的构造器
构造函数没有返回值,命名习惯为首字母大写,例如:new Person()可有参数也可没有,内容为this.name='xxx'形式:
创建对象构造器----->直接通过new一个实例生成对象
function Person (name,age,eye){ //创建对象构造器并添加属性
this.name='zs';
this.age=12;
this.eye='blue';
}
// 这里通过new生成实例对象
const obj=new Person() //obj为实例对象
3.原型方法----原理就是通过prototype属性向一个构造器添加属性和方法
这个方式的缺点是,当有引用属性时,改变一个对象的这个属性也会改变其他对象的这个属性。因为一个引用属性,都是指向的同一个地方。
function CreateObj(){ } ; //创建一个空的类
//在类的原型链上添加属性和方法
CreateObj.prototype.name='xxx';
CreateObj.prototype.say=function (){ alert ( '我是xxx' ) };
//生成对象
var obj=new CreateObj();
4.原型和构造联合方式------原理结合了以上两个方式
function Person (name,age){ //创建对象构造器并添加属性
this.name='zs';
this.age=12;
}
Person.protoytpe.eye='blue'; // 通过prototype属性向构造函数内添加新的属性
Person.protoytpe.say=function (){ alert ( '我是xxx' ) }; //方法同理
// 这里通过new生成实例对象
const obj=new Person() //obj为实例对象
5.字面量
var Person={};
Person.name='zhangsan';
Person.age=18;
Person.say=function ( ) {
alert('Hello!') };
Person.say();
网友评论