Javascript 直接为原型的属性赋值与扩展的区别

Javascript 直接为原型的属性赋值与扩展的区别,javascript,jquery,web,Javascript,Jquery,Web,我遇到了用Java脚本编写相同代码的两种风格,我想了解这两种风格的优缺点 以下是: options = $.extend({ property1 : value1, property2 : value2, }); VS 在谷歌搜索时,我发现如下: 1.0jQuery.extend target[,object1][,objectN]一个对象,如果传入其他对象,它将接收新属性;如果jQuery名称空间是唯一参数,它将扩展该名称空间 但有谁能帮助我

我遇到了用Java脚本编写相同代码的两种风格,我想了解这两种风格的优缺点

以下是:

options = $.extend({
    property1 : value1,
    property2 : value2,                
}); 
VS

在谷歌搜索时,我发现如下: 1.0jQuery.extend target[,object1][,objectN]一个对象,如果传入其他对象,它将接收新属性;如果jQuery名称空间是唯一参数,它将扩展该名称空间

但有谁能帮助我理解: 1.使用$.extend有什么好处? 2.上面这条线的意思是什么: 如果jQuery是唯一的参数,那么它将扩展jQuery名称空间


希望上面说的有道理

您使用的第一种方法:

options = $.extend({
                property1 : value1,
                property2 : value2,                
            }); 
根据 如果只向$.extend提供了一个参数,则表示忽略了目标参数。在本例中,假定jQuery对象本身是目标。通过这样做,您可以向jQuery命名空间添加新函数。这对于希望向JQuery添加新方法的插件作者来说非常有用

解释 您将收到的选项是jquery对象本身。您的结果选项对象将作为Jquery对象,您将无法直接访问键property1和property2。因为您已经扩展了$e,即jQuery对象本身

然后,您可以像使用$一样使用option来执行DOM操作或JQuery提供的其他功能。扩展的目的是向现有对象添加额外的道具。但如果您不提供target,它会假定它本身就是Jquery对象

那么现在,

  options.trim(" Hello World "); // outputs Hello World without 
                                //leading or trailing spaces
p.S.的行为就像一个$

基本对象分配 它只是基本的Javascript对象,行为正常。与上述场景不同,您可以使用点运算符访问属性

如果将空白对象作为第一个参数传递为

options = $.extend({}, {
                    property1 : value1,
                    property2 : value2,                
                });

现在它将像普通对象一样工作,因为您刚刚将空白目标对象与新属性合并

谢谢你提供全面的细节。这真的帮助我把事情弄清楚了。
options = {
        property1 : value1,
        property2 : value2,
    };
options = $.extend({}, {
                    property1 : value1,
                    property2 : value2,                
                });