我遇到了两种样式,用于在Java脚本中编写相同的代码,并希望了解两者的优点或缺点。
以下是:
options = $.extend({
property1 : value1,
property2 : value2,
});
VS
options = {
property1 : value1,
property2 : value2,
};
谷歌搜索时我发现如下:
1.0jQuery.extend( target [, object1 ] [, objectN ] )
一个对象,如果传入其他对象,将接收新属性,如果它是唯一的参数,将扩展jQuery命名空间。
但任何人都可以帮助我理解: 1.使用$ .extend的好处是什么? 2.这条线的含义如下: 如果它是唯一的参数,它将扩展jQuery命名空间。
希望以上有意义!
答案 0 :(得分:1)
您使用的第一种方法:
options = $.extend({
property1 : value1,
property2 : value2,
});
如果只为$ .extend()提供了一个参数,这意味着省略了target参数。在这种情况下,jQuery对象本身被假定为目标。通过这样做,您可以向jQuery名称空间添加新功能。这对于希望向JQuery添加新方法的插件作者非常有用。
您将收到的选项是jquery对象本身。您的结果选项对象将表现为Jquery对象,您将无法直接访问键 property1 和 property2 。因为您已经扩展了 $ ,即 jQuery 对象本身。
然后,当您使用 $ 执行DOM操作或 JQuery 提供的其他功能时,您可以使用该选项。扩展的目的是为现有对象添加额外的道具。但是如果你不提供目标,它就把它假定为Jquery对象本身。
现在,
options.trim(" Hello World "); // outputs Hello World without
//leading or trailing spaces
P.S。表现得像 $
options = {
property1 : value1,
property2 : value2,
};
它只是基本的Javascript对象,行为正常。与上述情况不同,您可以使用点运算符访问属性。
如果将空白对象作为第一个参数传递为
,则可以实现上述相同的行为options = $.extend({}, {
property1 : value1,
property2 : value2,
});
现在它将作为普通对象运行,因为您刚刚将空白目标对象与新属性合并。