它可以装饰对象,所以我认为它是可以的,但我不确定。
举个例子:
jQuery(document).hide()
通过添加额外的样式,可以更改文档对象。
编辑:
如果这不是装饰者设计模式?那它是什么?一定有一个模式名称!
它可以装饰对象,所以我认为它是可以的,但我不确定。
举个例子:
jQuery(document).hide()
通过添加额外的样式,可以更改文档对象。
编辑:
如果这不是装饰者设计模式?那它是什么?一定有一个模式名称!
它不会给现有对象添加新的行为,而只是创建一个包含现有对象作为其中一个值的新对象。它通过不同的API反映了现有对象的许多功能,并允许公开访问现有对象。
为了成为一个适当的装饰器,您应该能够访问传递进来的DOM对象的所有方法和值,而不需要通过不同的API或手动访问底层装饰对象。
jQuery最适合外观模式,因为它确实“定义了一个更高级别的接口,使子系统更易于使用。”例如,.css()
和.hide()
是为了方便使用而设计的功能,jQuery能够同时对多个元素执行操作也是如此:
$('.foo').css({left: '100px', top: '100px'}).hide(); // jQuery
// Pure JavaScript
for(var a = document.getElementsByClassName('foo'), i = 0; i < a.length; ++i) {
a[i].style.left = '100px';
a[i].style.top = '100px';
a[i].style.display = 'none';
}
jQuery似乎只适用于装饰器模式,尤其是在其动画功能方面。普通的HTML DOM元素不提供定时动画和附加队列,因此jQuery添加了这个功能。在大多数其他领域,通过直接访问底层DOM元素,jQuery提供了与之相同的功能。
但即使在那里,它也并不完全适用,因为jQuery并没有“动态保持相同的接口”。
我认为你可以这样称呼它,因为JQuery能够通过id获取HTML元素,并使用JavaScript函数、Ajax和其他功能进行修饰。
$(document)
这样的jQuery选择器时,它会返回一个新的jQuery对象实例,该实例仅引用原始的document
对象。