它装饰物体,所以我认为它是,但我不确定。
例如
jQuery(document).hide()
通过添加额外样式来更改文档对象。
修改
如果它不是装饰设计模式?它是什么呢?它必须有一个模式名称!
答案 0 :(得分:4)
它不会向现有对象添加新行为。它只是创建一个新对象,其中包含现有对象作为其值之一。它通过不同的API镜像现有对象的许多功能,并允许公共访问现有对象。
要使它成为正确的装饰,您应该能够访问传入的DOM对象的所有方法和值,而无需通过不同的API或无需手动访问底层装饰对象。
答案 1 :(得分:1)
jQuery最适合facade pattern,因为它“定义了一个更高级别的接口,使子系统更易于使用”。例如,.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补充说。在大多数其他领域,jQuery通过直接访问底层DOM元素提供了相同的功能。
但即便如此,它确实不合适,因为jQuery不是“动态保持相同的界面。”
答案 2 :(得分:0)
我认为你可以这样称呼它,因为JQuery能够通过id抓取html元素,并使用javascript函数,ajax和其他功能对它们进行decoracets。
答案 3 :(得分:0)
不,不是你在想的意思。 jQuery 插件经常使用装饰器模式,但核心库没有。
当你调用像$(document)
这样的jQuery选择器时,它会返回一个jQuery对象的新实例,它只引用原始的document
对象。