询问 Object.defineProperty 如下所示:
function testComponent(){
var testProperty;
Object.defineProperty(this, "testProperty",
{
get : function()
{
return testProperty;
},
set : function(val)
{
testProperty = val;
}
});
}
像这样使用它的地方:
testObject = new testComponent();
testObject.testProperty = "testValue";
根据我目前所见,似乎没有跨浏览器解决方案,因为我尝试使用es5-shim没有运气,但我想确认一下。我还找到了对这篇文章的引用,我的测试在 IE 7 和 8 中仍然失败,任何人都可以对此有所了解吗?
我记得几个月前在 S/O 的某个地方查看了一个相关问题,我想我看到有人在答案中为此写了一个解决方案。getter / setter 的任何一般解决方法也将不胜感激。这个想法是我需要一个对象上的 getter setter 等价物,而无需通过方法传递参数更改。我不需要 IE6,但我想支持 IE7+ ff 3.6+ 等范围内的浏览器
下面的 QUnit 测试:(jsFiddles)
(这些在我机器上的所有浏览器中传递,除了 IE 7 和 8
直接使用defineProperty,没有垫片:http:
//jsfiddle.net/uSYFE/
小提琴使用 ES5 垫片,我假设我需要做的就是包含它? :http:
//jsfiddle.net/hyperthalamus/ntwDy/
小提琴使用 IE 推荐的解决方案:http :
//jsfiddle.net/hyperthalamus/xfvz3/