Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数FunctionName(){}和object.FunctionName=function(){}之间有什么区别_Javascript_Jquery_Object - Fatal编程技术网

Javascript 函数FunctionName(){}和object.FunctionName=function(){}之间有什么区别

Javascript 函数FunctionName(){}和object.FunctionName=function(){}之间有什么区别,javascript,jquery,object,Javascript,Jquery,Object,今天在工作的时候,我的大脑在某种程度上是用javascript堆叠的 我想知道两者的基本区别是什么 function FunctionName(){ //Code goes here; } 及 两者的工作原理相同。那么两者的区别是什么呢。使用带有对象名的函数有什么好处吗 我读过。但它使用变量并指定函数特定的变量。我想在单个对象中创建对象并分配多个函数。第一个定义了全局函数名。如果加载两个库,并且它们都试图定义FunctionName,它们将相互冲突。您将只获得上次定义的一个 第二个变量

今天在工作的时候,我的大脑在某种程度上是用javascript堆叠的

我想知道两者的基本区别是什么

function FunctionName(){
    //Code goes here;
}

两者的工作原理相同。那么两者的区别是什么呢。使用带有对象名的函数有什么好处吗


我读过。但它使用变量并指定函数特定的变量。我想在单个对象中创建对象并分配多个函数。

第一个定义了全局函数名。如果加载两个库,并且它们都试图定义
FunctionName
,它们将相互冲突。您将只获得上次定义的一个

第二个变量只有一个全局变量,
MyFuncCollection
。所有函数都定义为该变量中的属性。因此,如果您有两个集合试图定义相同的函数名,一个集合将是
FuncCollection1.FunctionName
,另一个集合将是
FuncCollection2.FunctionName
,并且不会有任何冲突


唯一的冲突是,如果两个集合都试图为集合本身使用相同的名称,则这种情况不太可能发生。但这并非完全没有听说过:有一些库尝试使用
$
作为它们的主要标识符。jQuery是最突出的,它提供了
jQuery.noConflict()
来删除其
$
绑定并恢复到以前的绑定。

简单的回答是,对象上下文中的方法使用父对象上下文,而“全局”函数有自己的对象上下文

长答案涉及JavaScript的一般面向对象方法,尽管JavaScript中的所有内容都是一个对象,您也可以使用此方法创建数组

我真的不能告诉你为什么,但根据我的经验,最好的函数定义不是上面提到的两个,而是:

var myFunction = function(){};
可以将函数分配给变量,您甚至可以编写如下定义:

MyObject.myMethod = function(){};

为了进一步阅读,有各种在线教科书可以为您提供有关此主题的更多和更深入的信息。

我一直发现的一个主要优势是代码更简洁,覆盖函数的机会更少。然而,这远远不止于此

您的范围在对象内部完全更改。考虑下面的代码::

功能:

function FunctionName(){
    return this;
}
FunctionName()
返回:

Window {top: Window, location: Location, document: document, window: Window, external: Object…}
Object {}
对象:

var MyFuncCollection = new Object(); 
MyFuncCollection.FunctionName = function(){
    return this;
}
MyFuncCollection.FunctionName()
返回:

Window {top: Window, location: Location, document: document, window: Window, external: Object…}
Object {}
这就带来了一些很好的菊花链功能,以及其他功能。

第一个:

function functionName (){
    //Code goes here;
}
这是一个很好的例子。它在编写它的上下文中定义一个
函数
对象

注意:这不一定是
全局
上下文,当调用它时,
不会
说明它内部的

第二个注意事项:在函数中,只有当它是一个

第二点:

var myFuncCollection = {}; 

myFuncCollection.functionName = function () {
    //Code goes here;
};
注意:不要使用
new Object()
语法,将
new
与函数构造函数以外的任何函数一起使用被认为是不好的做法。改用文字形式(如上所述)

是对
对象的属性的简单赋值

同样的注意也应该说明:这并没有说明调用
this
时它的值。
调用
函数
对象时,JavaScript中的该
将被赋予一个值,以了解详细信息

当然,在
对象上放置
函数
有助于避免与同一上下文中的其他变量/函数声明发生命名冲突,但这可能是函数的局部上下文,而不一定是全局上下文

除此之外,从语言的角度来看,使用一组函数声明或对象上有一组方法没有任何区别

从设计的角度来看,将方法放在
对象上
允许您将逻辑分组和/或封装到应该包含它的特定对象。这是范例意义的一部分

当您希望导出或只是将所有这些函数传递给另一个函数时,这样做也很好


就这样(:

不重复的可能重复。这是一个问题,它将函数分配给特定变量。我想我正在创建一个对象,并将多个函数分配给该对象。对不起,伙计,在JS中完全相同。唯一的区别是,您将该变量存储在一个对象上。您可以将多个函数分配给单个变量吗?比如var funvar=ffunction(){}和var funvar=function(){}一个函数语句没有说明它里面的
this
的值。定义它的是它的调用方式。显示关键的差异是有信息的。这与调用方法无关。啊,没关系。我看到你在回答后对每个人都投了反对票。;)像这样的问题首先是,新开发人员阅读了这样的答案,认为这就是JS中定义的
this
,完全没有考虑JS中的委托和函数编程“你的范围完全在对象内部改变。考虑下面的代码::”如果范围没有改变,请解释清楚,这是说“小心”,龙可能在前面。",然后你给出一个具体的例子。我发现新开发人员很困惑,他们会把这当作一个简单明了的解释。例如,请注意,你只展示了使用方法而不使用函数创建流体API是可能的。这完全不是真的。函数语句没有说明这个insi的价值定义它的是调用它的方式。