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");