创建对象的六种方式及优缺点

创建对象的六种方式及优缺点

	// 1.{ }
    var a = {'name':'张三'};
    
    // 2.字面量
    var b = new Object();
    
    // 3.工厂模式
    //优点:函数可以无数次的生成,解决了代码大量重复的问题
    //缺点:没有解决对象识别的问题(即怎样知道一个对象的类型)
    function aa(name,age){
    	var bb = new Object();
    	bb.name = name;
    	bb.age = age;
    	bb.create = function(){
    		console.log(this.name+this.age);
    	}
    	return bb;
    }
    var cc = new aa('张三',14);
    console.log(cc);
    
    // 4.构造函数
    //优点:解决了代码重复和对象识别
    //缺点:存在内存大量占用的风险
    function aaa(name,age){
    	this.name = name;
    	this.age = age;
    	this.fun = function(){
    		console.log(this.name+this.age);
    	}
    }
    var bbb = new aaa('李四',23);
    console.log(bbb);
    
    // 5.原型
    //优点:更好的体现了封装的特性,便于读写
	//缺点:需要手动的去把constructor指向自己
   function abc(name,age){
   		abc.prototype.name = name;
   		abc.prototype.age = age;
   	}
   	var pp = new abc('王五',45);
   	console.log(pp);
   	
   	// 6.混合(原型+构造函数)
   	//优点:解决了共享属性与不共享属性的问题,可以精确控制
	//缺点:原型与构造函数相分离,体现不了封装	
   	function oo(name,age,create){
   		this.name = name;
   		this.age = age;
   		this.create = function(){
   			console.log(this.name+this.age);
   		}
   	}
   	oo.prototype.fun = function(){
   		console.log(123);
   	}
   	var kk = new oo('赵六',23,'啦啦啦');
   	console.log(kk);
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值