是否有可能「覆蓋」生成的屬性設置器的相等性檢查? 我喜歡有一個(整數)屬性,可以區分0(零)-0(負零)。qooxdoo:增強屬性以區分0和-0
例如這樣的:
qx.Class.define("io.Dummy",
{
extend : qx.core.Object,
properties :
{
value : {
check : "Integer",
nullable : true,
init : null,
event : "changeValue"
}
}
});
,使得下面的代碼將觸發3個事件(而不是僅1):
var dummy = new infodesk.Dummy();
dummy.addListener("changeValue", function (e) {
this.info("changed!");
}, this);
dummy.setValue(-0); // <= changed!
dummy.setValue(-0);
dummy.setValue(+0); // <= changed!
dummy.setValue(+0);
dummy.setValue(-0); // <= changed!
dummy.setValue(-0);
當我 「補丁」 在框架內平等的檢查( qx.core.Property
的__emitXxx
方法)通過替換代碼如「if (a===b)
」與「if(Object.is(a,b))
」[1]它的工作,
...但它會如果有更好的更乾淨的方式,那就好了。
也許這是功能要求? 對於像「比較」(函數)或「altCheck」(布爾)的屬性定義屬性?
properties :
{
value : {
check : "Integer",
nullable : true,
init : null,
event : "changeValue",
altCheck : true // 'alternative check enabled'
// rsp.:
compare : function (a, b) { return Object.is(a, b); }
}
}
[1] ECMA腳本6
這看起來像一個功能要求:) ......你能請報告給https://github.com/qooxdoo/qooxdoo/issues ......也爲討論的策略來解決這個問題,請加入我們的https: //gitter.im/qooxdoo/qooxdoo –