JavaScript自定义对象的判断以及属性不可写的实现

 

1.   在使用JavaScript创建自己定义的对象时,如果想让某些属性不可写,可以使用__defineGetter__()方法和__defineSetter__()方法来实现 

person = function(id, name, age)
	{
		this.id = id;
		this.name = name;
		this.age = age;

		// set id: readOnly
		var this_id = this.id;
		this.__defineGetter__("id", function()
		{
			return this_id;
		});
		this.__defineSetter__("id", function()
		{

		});
	};

	person_001 = new person(0, "tom", 20);

	alert("person_001.id : " + person_001.id); // person_001.id : 0
	alert("person_001.name : " + person_001.name); // person_001.name : tom
	alert("person_001.age : " + person_001.age); // person_001.age : 20	
	
	person001.id = 2; 
	alert("person_001.id : " + person_001.id); // person_001.id : 0
		
	person001.name = "leo"; 
	alert("person_001.name : " + person_001.name); //  person_001.name : leo
	
	person001.age = 30; 
	alert("person_001.age : " + person_001.age); // person_001.age : 30


           从上面的例子看出,对person类的属性id,实现__defineGetter__()方法和__defineSetter__()方法,其中__defineSetter__()方法是个空方法,什么都不做!这样对一个person对象的id属性赋值的时候,什么都不会发生,即id属性不可写了。如果在对id属性赋值时,需要触发一些动作,比如抛异常或者打印信息之类的需求,只要写在__defineSetter__()方法里面就可以了。

 

2.   在JavaScript中如何判断一个对象是自己创建的类的实例呢?以上面定义的person类为例

 if(person001.constructor == person)
		alert("true");
	else
		alert("false");

 

 

 


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值