<JavaScript高级程序设计>笔记二: 创建对象


其实下边第一个例子早就写好了 , 一直没试和prototype相关的 就没贴出来

最近微忙, 以后可能前端的东西会写的更多一点, 而且 jQuery可能不让用... 还是好好弄弄原生Js吧

还是先凑合记下来, 回头再来改


0.命名空间

var nameSpace = {};//==>定义一个命名空间


1.描述创建对象

//==>1.初始化一个对象
			nameSpace.TestObj = function(){
				var val = 0;
				var fun1 = function(){//==>相当于private(var作用域限制)
					alert( val );
				};
				this.fun2 = fun1;//==>相当于public
			};
			
			var obj = new nameSpace.TestObj();//==>new出来
			obj.fun2();//==>不能调用fun1(),因为var作用域仅在function内
		
		/*  
			//==>换种方法,直接描述出一个对象
			nameSpace.TestObj = {
				val : 0,
				fun1 : function(){
					alert( this.val );
				},
				fun2 : function(){
					this.fun1()
				}
			};
			nameSpace.TestObj.fun2();
		*/

2.prototype原型

//==>2.Prototype对象		
			nameSpace.TestPrototypeObj = function(){};			
			nameSpace.TestPrototypeObj.prototype = {
				name : "kk",//==>这样定义会在每个TestPrototypeObj中都初始化"kk"和24两条信息,
				age : 24,//==>所以属性存在构造里, 函数存在原型里:数据分离,节省内存
			}
			nameSpace.TestPrototypeObj.prototype.sayHi = function(){ 
				alert("Hi~"+this.name); 
			};

			var first = new nameSpace.TestPrototypeObj();
			var second  = new nameSpace.TestPrototypeObj();//==>都会带着"kk"和24两条信息
			first.sayHi();

3.混合定义对象

			//==>混合俩种方式的定义
			nameSpace.TestMixObj =  function(name, age)  
			{  
				this.name = name;  
				this.age = age;  
			}  
			  
			nameSpace.TestMixObj.prototype.job = "doctor";  //==>动态添加一个属性
			nameSpace.TestMixObj.prototype.getJob = function(){//==>动态添加一个方法  
				alert( "Job of "+this.name+"("+this.age+")"+" is "+this.job );  
			}  

			var kk = new nameSpace.TestMixObj("kk", 24);//==>按需构造  
			kk.getJob();






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值