如何在一个对象上有效地应用许多不同的规则,以及使用javascript的面向对象技术
How to apply many different rules on an object efficiently and using object oriented techniques using javascript
这是我第一次通过这个任务。我需要根据字段更新我的UI。字段可以是不同的类型。这里我只是检查一个备忘录或布尔类型。
// UI Field Rule set.
var UIFieldRules = {
isMemo: function() {
return this.DataType === DataTypeKVP("Memo");
},
isBoolean: function() {
return this.DataType === DataTypeKVP("Boolean");
},
MapToList: function() {
if (UIFieldRules.isMemo.call(this) || UIFieldRules.isBoolean.call(this)) {
console.log("memo or bool");
console.log(UIFieldRules.isMemo.call(this));
console.log(this);
MAPTOLIST_SELECTOR.prop('disabled', true);
return;
} else {
MAPTOLIST_SELECTOR.prop('disabled', false);
console.log("UI field rules found memo");
}
}
};
然后在加载所有字段时调用这个对象。
UIFieldRules.MapToList.call(field);
这很好地满足了任务,但是现在我需要在字段中应用更多的规则。(如果你以前听过这个,请打断我)
我怎么能得到这个集合,我可以只是添加一个规则到一个集合,并有他们都动态应用在javascript?
更新提供示例:
function MapToList(field){
isBoolean:function(){}
isMemo : function(){}
execute : function(){
if (UIFieldRules.isMemo.call(this) || UIFieldRules.isBoolean.call(this)) {
console.log("memo or bool");
console.log(UIFieldRules.isMemo.call(this));
console.log(this);
MAPTOLIST_SELECTOR.prop('disabled', true);
return;
} else {
MAPTOLIST_SELECTOR.prop('disabled', false);
console.log("UI field rules found memo");
}
}
}
然后,如果我想创建更多的规则(我做)我应该创建另一个对象像上面的一个吗?在JS中是否有这样做的最佳实践方法?
var rules = [];
rules.push(new MapToList(field));
rules.push(new RegExEnabled(field));
$.each(rules,function(item){
item.execute();
});
您的示例方法非常好。创建实现相同接口的多个对象,将它们放在一个列表中,然后对每个对象调用一个公共方法:
var rules = [MapToList, RegExEnabled];
rules.forEach(function(item){
item.execute(field);
});
然而,你可能想要注意,如果你的对象不是有状态的或者没有任何参数化,你通常不需要构造函数+ new
,一个简单的对象字面量就足够了。
类似地,如果您的共享接口归结为单个execute
方法,那么您实际上想要的不是对象列表,而是可以调用的函数列表。这不是Java:-)
相关文章:
- 面向对象的Javascript代码在IE7中不起作用
- 面向对象JavaScript中的私有函数
- 面向对象,控制器问题,初学者Javascript
- 面向对象的 JavaScript 共享方法变量
- 是否所有面向对象的语言都会在内存中创建大量重复信息
- 节点.js中的面向对象开发
- JavaScript中面向对象DOM操作的混乱混乱
- 尝试使用面向对象的javascript和AJAX
- 如何使用面向对象的 javascript 从控件调用函数
- JavaScript 面向对象的调用函数内部函数或调用函数 insede var
- 以面向对象的风格使用Meteor和javascript
- 传单JS面向对象的最佳方法
- 面向对象编程和onmousedown函数的问题
- 面向对象的WebGL上下文包装失败
- 这个mixins代码是书中的错误吗;面向对象JavaScript的原理”;
- 使用闭包编译器编写更好的面向对象JavaScript完整示例代码
- jQuery中datalist的面向对象编程
- 在面向对象编程中删除表行
- 类桌面 Web 应用程序中的面向对象设计
- 如何在一个对象上有效地应用许多不同的规则,以及使用javascript的面向对象技术