jLinq(JSON 的 LINQ)屏幕录像 #2 –创建您自己的扩展方法






4.67/5 (2投票s)
jLinq (JSON 的 LINQ) 是一个完全可扩展的库,允许您创建自己的查询方法并将其附加到核心库。本屏幕录像介绍了创建您的第一个扩展方法的一些基本知识。
jLinq 是一个 Javascript 库,允许您使用 LINQ 风格的查询处理 JSON 数据。
您知道 jLinq 允许您使用自己的方法扩展基础库吗?您是否意识到您创建的任何方法都可以直接插入并与内置的 jLinq 功能协同工作?
本屏幕录像介绍了创建 jLinq 的第一个扩展方法的一些基本知识。
创建查询方法
Query
方法决定了哪些记录保留以及哪些记录从 jLinq 查询中删除。以下是扩展方法的外观示例
jLinq.extend({
name:"evenValues", //the name of this method
type:"query", //the kind of method this is
count:0, //how many parameters we expect
method:function(query) {
//determine how to evaluate the value being compared
var compare = query.when({
"string":function() {
return query.value.length;
},
"array":function() {
return query.value.length;
},
"other":function() {
return query.helper.getNumericValue(query.value);
}
});
//the actual comparison
return compare % 2 == 0;
}
});
您会注意到,我们提供了此新方法的名称、方法类型(在本例中为 query
方法)、预期的参数数量(不包括字段名称),然后是用于确定是否保留记录的实际方法。
如果您不完全理解这如何工作,那么您可能需要观看本文末尾的屏幕录像,以逐步了解其工作原理。
运算符命名
本屏幕录像还解释了运算符命名。当您扩展 query
方法时,jLinq 还会添加几个其他带有运算符前缀的名称方法。这些方法在被使用时都会执行正确的切换。例如…
//this method is one way to do it
jLinq.from(data.users)
.less("age", 30)
.or()
.evenValues()
.select();
//this method was generated automatically - saves us a step!
jLinq.from(data.users)
.less("age", 30)
.orEvenValues()
.select();
当然,如果您将方法命名为 orHasSomeValue()
之类的内容,那么您最终会得到一些奇怪命名的运算符方法(例如 orOrHasSomeValue()
)。
很简单——差不多
扩展方法一开始有点令人困惑,但创建第一个扩展方法后,您应该就能上手了。 此屏幕录像 将帮助您入门。