【发布时间】:2011-05-25 22:56:47
【问题描述】:
来自 C#/PHP,我希望在使用 Javascript 创建的类(函数)上有完整的 getter/setter。
然而,在我遇到的大部分 Javascript 代码中,并没有使用 getter 和 setter,而是使用简单的公共变量。
我很高兴在 getter 和 setter 上找到 John Resig's article,但是上面的一些 cmets 声明某些浏览器“不支持 getter 和 setter”,这让我感到困惑,因为它们不是 Javascript 的“功能”,而是更多的是使用基本 Javascript 语法的简单模式。这篇文章也是 2007 年写的,所以现在可能已经过时了。
Javascript 中的 getter 和 setter 的当前状态是什么?它们是否确实被当今所有浏览器“支持”(无论这意味着什么)?它们是 Javascript 的有用编程模式,还是 Javascript 类(作为函数)更好地使用公共变量?有没有比以下更好的方法来实现它们?
$(document).ready(function() {
var module = new Module('idcode');
module.set_id_code('new idcode');
module.set_title('new title');
$('body').html(module.get_id_code()+': '+module.get_title());
});
function Module(id_code, title) {
var id_code = id_code;
var title = title;
//id_code
this.get_id_code = function() {
return id_code;
}
this.set_id_code = function(value) {
id_code = value;
}
//title
this.get_title = function() {
return title;
}
this.set_title = function(value) {
title = value;
}
}
【问题讨论】:
-
确切地说,我不希望代码膨胀,但我希望像在 PHP 和 C# 等其他语言中那样对我的类进行公共和私有访问。 PHP 有 __get 和 __set 魔术方法,而 C# 有它的“属性语法”来获得分离而没有臃肿的语法。 Javascript中有这样的功能吗?
-
上述代码在 IE 7/8/9 中是否有效??
标签: javascript oop getter-setter