【发布时间】:2016-04-08 13:53:48
【问题描述】:
我有 2 个方法想用作可链接的方法。可以链接其他方法来进一步修改文本。
left 从左侧返回 X 个字符。 right 从右边返回 X 个字符。
目前我可以这样做:
var txt = "hello";
S$(txt).left(4).right(2).val //returns "ll"
我想做的就是这个。 基本上我想在最后一个链接方法之后返回结果,而不必调用属性。这可能吗?
var txt = "hello";
S$(txt).left(4).right(2) //returns "ll"
下面是主要代码:
(function (global) {
var jInit = function(text){
this.text = text;
this.val = text;
}
var jIn = function(text){
return new jInit(text);
}
var jStringy = jStringy || jIn;
jInit.prototype.left = function (num_char) {
if (num_char == undefined) {
throw "Number of characters is required!";
}
this.val = this.val.substring(0, num_char);
return this;
}
jInit.prototype.right = function (numchar) {
this.val = this.val.substring(this.val.length - numchar, this.val.length);
return this;
}
global.jStringy = global.S$ = jStringy;
return this;
}(window));
【问题讨论】:
-
我假设 left 和 right 将始终对字符串进行操作?您也许可以使用这些属性扩展 javascript 字符串对象并获取值,而无需调用 val。
-
您希望您的可链接函数返回一个
String对象,但您不想明确告诉链何时结束,对吧?那么唯一的方法就是在String.prototype中创建left和right函数。 -
这就是我所担心的,但是因为这是一个做原型的图书馆,所以不会是专业的。
-
例如,
lodash是一个非常专业的库,它们具有可链接的功能。它使用.value()来结束链。所以你也可以这样做,不会太冗长。
标签: javascript oop object methods method-chaining