浏览 10588 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-26
有两种方法来定义Getter或Setter方法:
还有一点要注意的就是getter方法没有参数,setter方法必须有一个参数,也就是要设置的属性的新值。 例如: js 代码
在对象定义后给对象添加getter或setter方法要通过两个特殊的方法__defineGetter__和__defineSetter__。这两个函数要求第一个是getter或setter的名称,以string给出,第二个参数是作为getter或setter的函数。 例如我们给Date对象添加一个year属性: js 代码
至于采用哪种形式主要取决于个人的编程风格,采用第一种形式结构紧凑,更容易理解。但是假如你想在对象定义以后再添加Getter或Setter,或者这个对象的原型不是你写的或是内置对象,那么只好采用第二种方式了。 下面是一个为Mozilla浏览器添加innerText属性的实现: js 代码
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-12-27
能否给点使用的例子?
|
|
返回顶楼 | |
发表时间:2006-12-28
不错,IE下有类似__defineGetter__ __defineSetter__的机制么?
|
|
返回顶楼 | |
发表时间:2006-12-28
不兼容IE
|
|
返回顶楼 | |
发表时间:2006-12-29
引用 Date.prototype.__defineGetter__('year', function() {return this.getFullYear();});
Date.prototype.__defineSetter__('year', function(y) {this.setFullYear(y)}); var now = new Date; alert(now.year); now.year = 2006; alert(now); alert(now.year);是不是应该为alert(now.year()); now.year = 2006; 是不是应该为now.year(2006); 该帖看了2遍也是没看懂,lz能否耐心地指点一二啊? |
|
返回顶楼 | |
发表时间:2006-12-29
直接用now.year就行,我的理解就是相当于给Date对象添加了一个可读写的year属性
|
|
返回顶楼 | |
发表时间:2006-12-29
jianfeng008cn能不能告诉我你的msn或qq,想跟你切磋下。
|
|
返回顶楼 | |