Javascript 系泊链

Javascript 系泊链,javascript,mootools,method-chaining,Javascript,Mootools,Method Chaining,我不认为函数/方法应该返回void,而是应该返回this。这就是为什么我惊讶地发现这不起作用: $('buttonContainer').getElement('input').set('value', this.get('value') + ' '); 代码要做的是找到一个,它是id属性值为buttonContainer的元素的子元素,并在其值属性中添加两个空格字符。但是前面显示的代码错误,我不得不写: var input = $('buttonContainer').getElement

我不认为函数/方法应该返回void,而是应该返回
this
。这就是为什么我惊讶地发现这不起作用:

$('buttonContainer').getElement('input').set('value', this.get('value') + '  ');
代码要做的是找到一个
,它是
id
属性值为
buttonContainer
的元素的子元素,并在其
属性中添加两个空格字符。但是前面显示的代码错误,我不得不写:

var input = $('buttonContainer').getElement('input');
input.set('value', input.get('value') + '  ');

难道MooTools没有办法将这两个独立的语句链接成一个吗?类似于我的第一个片段的内容?

您所问的与链接无关
没有上下文,因此您的呼叫失败。您不满意的解决方案是您需要为其他值/属性编写它的方式,但对于这样的直接更改,请按以下方式编写:

$('buttonContainer').getElement('input').value += '  ';

你所问的与锁链无关
没有上下文,因此您的呼叫失败。您不满意的解决方案是您需要为其他值/属性编写它的方式,但对于这样的直接更改,请按以下方式编写:

$('buttonContainer').getElement('input').value += '  ';

MooTools不能为每个调用的方法动态地重新绑定
。这是不可能的

您必须了解,对链的每个调用都在相同的范围内,因此
保持不变。jQuery和所有其他框架都有同样的问题。如果要同时对一个元素执行两个操作,则必须将该对象存储在变量中,然后使用该变量引用该对象,就像在第二个示例中一样:

var input = $('buttonContainer').getElement('input');
input.set('value', input.get('value') + '  ');

这个
只能在作用域更改时更改(在JavaScript中,当您点击包含函数的大括号时总是如此)。这不是MooTools链接的限制。这是JavaScript在一般情况下的工作方式。

MooTools不能为调用的每个方法动态地重新绑定
。这是不可能的

您必须了解,对链的每个调用都在相同的范围内,因此
保持不变。jQuery和所有其他框架都有同样的问题。如果要同时对一个元素执行两个操作,则必须将该对象存储在变量中,然后使用该变量引用该对象,就像在第二个示例中一样:

var input = $('buttonContainer').getElement('input');
input.set('value', input.get('value') + '  ');

这个
只能在作用域更改时更改(在JavaScript中,当您点击包含函数的大括号时总是如此)。这不是MooTools链接的限制。这是JavaScript在一般情况下的工作方式。

@Andrew,我知道你想说什么,但在JS中你经常使用大括号(
if
for
while
switch
try
),它唯一改变作用域的时候就是当大括号与函数关联时。@Doug:谢谢,我的小疏忽,我编辑了答案来纠正这个错误。@Andrew,我知道你想说什么,但在JS中你经常使用大括号(
if
for
while
switch
try
),它唯一改变范围的时候就是当这些大括号与函数关联时。@Doug:谢谢,我的小疏忽,我已经编辑了答案来纠正这个错误。