Javascript 我不明白
mootools 1.2.5文件规定: 一种自定义对象({})实现,在设置、获取或迭代时不考虑原型。非常有用,因为在JavaScript中,我们不能使用Object.prototype。相反,我们可以使用Hash.prototypeJavascript 我不明白,javascript,mootools,Javascript,Mootools,mootools 1.2.5文件规定: 一种自定义对象({})实现,在设置、获取或迭代时不考虑原型。非常有用,因为在JavaScript中,我们不能使用Object.prototype。相反,我们可以使用Hash.prototype 但是我不明白,请给我一些例子来说明我们如何从哈希中获益。首先,Hash已经被弃用,取而代之的是MooTools 1.3中的对象 MooToolsObject为Object添加了一些非常有用的方法。关于原型的信息与高级使用相关,但在大多数情况下,当您使用MooTool
但是我不明白,请给我一些例子来说明我们如何从哈希中获益。首先,
Hash
已经被弃用,取而代之的是MooTools 1.3中的对象
MooToolsObject
为Object
添加了一些非常有用的方法。关于原型
的信息与高级使用相关,但在大多数情况下,当您使用MooTools对象
时,无需担心
以下是MooTools添加到对象中的一些有用方法:
// each
// alerts 'The first day of the week is Sunday',
// 'The second day of the week is Monday', etc.:
Object.each(
{first: 'Sunday', second: 'Monday', third: 'Tuesday'},
function(value, key){
alert('The ' + key + ' day of the week is ' + value);
});
// map
var myObject = {a: 1, b: 2, c: 3};
var timesTwo = Object.map(timesTwo, function(value, key){
return value * 2;
}); // timesTwo now holds an object containing: {a: 2, b: 4, c: 6};
// filter
var myObject = {a: 10, b: 20, c: 30};
var biggerThanTwenty = Object.filter(myObject, function(value, key){
return value > 20;
}); // biggerThanTwenty now holds an object containing: {c: 30}
(上面的示例和更多示例)首先,在MooTools 1.3中,Hash
已被弃用,取而代之的是对象
MooToolsObject
为Object
添加了一些非常有用的方法。关于原型
的信息与高级使用相关,但在大多数情况下,当您使用MooTools对象
时,无需担心
以下是MooTools添加到对象中的一些有用方法:
// each
// alerts 'The first day of the week is Sunday',
// 'The second day of the week is Monday', etc.:
Object.each(
{first: 'Sunday', second: 'Monday', third: 'Tuesday'},
function(value, key){
alert('The ' + key + ' day of the week is ' + value);
});
// map
var myObject = {a: 1, b: 2, c: 3};
var timesTwo = Object.map(timesTwo, function(value, key){
return value * 2;
}); // timesTwo now holds an object containing: {a: 2, b: 4, c: 6};
// filter
var myObject = {a: 10, b: 20, c: 30};
var biggerThanTwenty = Object.filter(myObject, function(value, key){
return value > 20;
}); // biggerThanTwenty now holds an object containing: {c: 30}
(上面的例子和更多来自的例子)@Bowservisior提供了来自1.3的例子,其中mootools不赞成使用Hash来扩展对象类型,但既然您谈到了1.2.5文档,我还是会回答
在1.2.x中,Hash最有用的功能是能够创建类似对象的结构,这些结构可以是原型
我不久前回答了这个问题,给出了类似的例子:
当谈到1.3 w/o兼容模式时,您仍然可以通过Object.implement()
来定义自定义对象方法,但这与略有不同,因为这个不是对象,总是需要调用对象。yourCustomMethod(yourobj,callbackFunction)
@bowsersenior提供了1.3版本的示例,其中mootools不推荐使用Hash来扩展对象类型,但既然您提到了1.2.5版本的文档,我还是会回答
在1.2.x中,Hash最有用的功能是能够创建类似对象的结构,这些结构可以是原型
我不久前回答了这个问题,给出了类似的例子:
当谈到1.3 w/o兼容模式时,您仍然可以通过Object.implement()
来定义自定义对象方法,但这与略有不同,因为这个不是对象,总是需要调用对象。yourCustomMethod(yourobj,callbackFunction)
哈希存在的原因是因为实现方法是Object.prototype,这是非常糟糕的做法,因为它会破坏您的应用程序
Hash使使用Hash.prototype成为可能,例如:
new Hash({my: 'nice', literal: 'object'}).filter(someFunction).map(function(value){
return value + ' sfsdf ';
}).getValues();
您可以使用Hash.implement
添加您自己的方法,这实际上会将方法添加到Hash.prototype中
因为有了新的ECMAScript 5规范,它有很多Object.*函数,比如Object.keys,MooTools 1.3现在使用这些函数而不是散列函数
var obj = {my: 'nice', literal: 'object'}
Object.values(Object.map(Object.filter(obj, someFunction), function(value){
return value + ' sfsdf ';
}));
在本例中可能会更详细一些,但更符合ES5。
如果你真的喜欢Hash,你仍然可以在mootoolsmore1.3中使用它们
请注意,您可以像上面的对象示例一样使用哈希,因此:
var values = Hash.getValues({my: 'nice', literal: 'object'});
哈希存在的原因是因为实现方法是Object.prototype,这是一种非常糟糕的做法,因为它会破坏您的应用程序
Hash使使用Hash.prototype成为可能,例如:
new Hash({my: 'nice', literal: 'object'}).filter(someFunction).map(function(value){
return value + ' sfsdf ';
}).getValues();
您可以使用Hash.implement
添加您自己的方法,这实际上会将方法添加到Hash.prototype中
因为有了新的ECMAScript 5规范,它有很多Object.*函数,比如Object.keys,MooTools 1.3现在使用这些函数而不是散列函数
var obj = {my: 'nice', literal: 'object'}
Object.values(Object.map(Object.filter(obj, someFunction), function(value){
return value + ' sfsdf ';
}));
在本例中可能会更详细一些,但更符合ES5。
如果你真的喜欢Hash,你仍然可以在mootoolsmore1.3中使用它们
请注意,您可以像上面的对象示例一样使用哈希,因此:
var values = Hash.getValues({my: 'nice', literal: 'object'});