MooTools Hash / Object.each等效于jquery

时间:2011-06-01 10:10:59

标签: javascript jquery mootools


在我的项目中,我需要将一个大脚本(表单验证插件)从mootools转换为Jquery。它有oops概念。我搜索了很多,发现了HJS面向对象的Jquery插件,但是在下面有问题但是...

initialize : function (form, options){
if (this.form = $(form)) {      
  this.form.isValid = true;
  this.regex = ['length'];
  this.alertMsg = [];
  this.validations = [];
 var regex = new Hash(this.options.regexp);
  regex.each(function(el, key) {
  this.regex.push(key);
}, this);
var alertMsg = new Hash(this.options.alerts);
  alertMsg.each(function(el, key) {
  this.alertMsg.push(key);
}, this);
$(form).find("*[class*=validate]").each(function(el) {          
   this.register(el);
}, this);
}
},
......

this.register(el)函数没有触发.....

Jquery中的“new Hash()”等价物是什么? 如何在jquery中替换函数(el)?

请帮助我...

谢谢,
HG

1 个答案:

答案 0 :(得分:2)

mootools中的哈希type基本上是一个原型对象克隆type,可以安全地获取.each.some等方法 - http://mootools.net/docs/more/Types/Hash

最终,你正在使用javascript,你可以使用for var in object epression在javascript中处理对象:

var object = {
    foo: "bar",
    bar: "foo"
};

for (var key in object) {
    alert(key);
    alert(object[key]);
}

要考虑的事项:检查hasOwnProperty或在对象上设置__proto__: null以避免出现以下问题:

Object.prototype.hello = "world";
var object = {
    foo: "bar",
    bar: "foo"
};

for (var key in object) {
    alert(key); // foo, bar, hello
    alert(object[key]);
}

相反,请执行:

var object = {
    __proto__: null,
    foo: "bar"
};

如果可用,这也可以作为new Object(null)

是的,原型设计对象不是一种安全的做法 - 因此mootools在Hash中进行,而不是实际的Object类型。哈希现已弃用,以支持Object - http://mootools.net/docs/core/Types/Object