Javascript中调用函数的5种方法
本文详细介绍了Javascript中各种函数调用的方法和原理,这对理解Javascript的功能非常有帮助!Javascript,5种调用函数的方法
再一次,我发现那些有bug Javascript代码的人是由于不真正理解Javascript函数导致了工作(顺便说一句,很多代码是由我编写的)。Javascript具有函数编程的特性,当我们选择面对它时,它将成为我们的障碍。
作为一个初学者,五测试功能的方法打电话给我们,表面上我们会认为功能和C #的作用非常相似,但我们会看到,仍有不同的地方很重要,忽视这些差异无疑会导致跟踪bug。首先让我们创建一个简单的函数,可用于以下部分。此函数只返回当前值和这两个参数的值。
复制代码代码如下所示:
function makeArray(arg1,arg2){
返回arg1,arg2 } {这;
}
最常用的方法,但不幸的是,全局函数调用
当我们学习Javascript时,我们知道如何在上述例子的语法中定义函数。
我们也知道调用这个函数非常简单,我们需要做的只是:
复制代码代码如下所示:
makearray(,);
/ / = > {一}窗口,
等一下.那个窗户是什么
警报(类型的窗口。methodthatdoesntexist);
未定义的
警报(类型的窗口。makearray);
Window.makeArray(,);
/ / = > {一}窗口,
我说最常见的方式是不幸的,因为它会导致我们在默认情况下全局声明的函数。我们都知道,最好的做法不是全球编程的成员。Javascript中尤其如此。避免企业在Javascript,你不会后悔的。
Javascript函数调用规则1
在一个函数中,并没有明确通知业主对象,如myFunction(),这将导致该值是默认的对象(窗口)。
函数调用
让我们创建一个简单的对象和使用makearray功能的一种方式。我们将以JSON方式声明一个对象。我们也叫这种方法。
复制代码代码如下所示:
创建对象
var ArrayMaker = { {
一定有价值有,
制作:makearray
};
/调用生成()方法
ArrayMaker.make(,);
/ / = > {一} 'one',','两个'
使用方括号的语法。
{ }('one'‘',);
/ / = > {一} 'one',','两个'
在这里看到的是不同的,这个值变成了对象本身。你可能怀疑原来的函数定义没有改变,为什么它不是窗口呢。好吧,这是在jsavacript函数的传递函数,是Javascript的标准数据类型,确切的说是一个对象。你可以通过他们或复制他们。这是因为如果联合函数的形参表和函数体是复制并分配到使物业在'one',似乎一个ArrayMaker定义:
复制代码代码如下所示:
var ArrayMaker = { {
一定有价值有,
使(arg1,arg2:功能){
返回arg1,arg2 } {这;
}
};
Javascript函数调用规则2
在一个使用方法,语法,像obj.myfunction()或obj { 'myfunction'}(),和这一价值目标
这是事件处理代码中bug的主要来源,并查看这些示例。
复制代码代码如下所示:
功能buttonClicked(){
var =文本(本=窗口)窗口:this.id;
警报(文本);
}
VaR Button1 = document.getelementbyid('btn1);
var button2 = document.getelementbyid('btn2);
button1.onclick = buttonClicked;
button2.onclick =函数(){ buttonClicked();};
点击第一个按钮会因为它是调用一个方法的按钮显示,这为对象(按钮元素)点击第二个按钮显示窗口因为buttonClicked是直接调用(不像OBJ。buttonClicked)。这个按钮和第三个事件处理程序直接在标签上是一样的,点击第三个按钮。所以结果是第二个也是相同的。
使用类似js的js库具有以下优点。当在jQuery中定义事件处理程序时,js库有助于重写此值,以确保它包含对当前事件源元素的引用。
复制代码代码如下所示:
jQuery
$(# BTN1)。Click(function(){)
警报(这个ID); / / jQuery ensures'this'will是按钮
});
jQuery如何重新加载此值以继续读取
其他两种:应用()和调用()
你越是使用Javascript的功能,你会发现你需要更多的传递函数,在不同的上下文中调用它们,就像在事件处理函数的Qjuery做的,你经常需要重写本的价值。记住,我告诉过你,Javascript是对象的函数,函数对象包含一些预定义的方法,这是应用(二)和调用(),我们可以使用它们来重置这个对象。
复制代码代码如下所示:
var gasGuzzler = {年:2008、模型:'dodge救市};
makearray.apply(gasGuzzler,{一},);
/ / = > { gasGuzzler,话},
makearray.call(gasGuzzler,'one',);
/ / = > { gasGuzzler,话},
这两种方法相似。区别在于以下参数的不同。Function.apply()是通过使用一个数组传递给函数,而function.call()是一个独立的参数传递。实际上,在大多数情况下,您会发现应用程序()更方便。
jsavacript函数调用规则3
如果我们想超载的价值当我们不复制功能的一种方法,我们可以使用myfunction.apply(obj)或myfunction.call(obj)。
构造函数
我不想深入研究Javascript中的定义类型,但目前我们不需要知道Javascript类中的任何类型,而且任何自定义类型都需要一个初始化函数,使用原型对象(作为初始化函数的一个属性)来定义您的类型也是一个好主意,让我们创建一个简单的类型。
复制代码代码如下所示:
声明构造函数
function ArrayMaker(arg1,arg2){
this.someproperty = 'whatever;
this.thearray = { },arg1,arg2;
}
语句/实例化方法
arraymaker.prototype = { {
方法:函数(){
警报('somemethod叫');
},
getarray:函数(){
返回this.thearray;
}
};
VaR是= new ArrayMaker(,);
VaR其他= new ArrayMaker(第一、第二);
Am.getArray();
/ / = > {是},,
一个非常重要和值得注意的是,新的运营商,在函数调用前无功能就像你的全局函数,这些属性是我们创建将在全球创建对象(窗口),和你不想要的东西,另一个话题,因为在你的构造函数没有返回值,所以如果你忘了使用新的运营商,将使你给变量未定义。由于这个原因,构造函数函数以大写字母开头是一个好习惯,它可以用来提醒您在调用时不要忘记在操作符前面新建。
有了这个警告,初始化函数中的代码和用其他语言编写的初始化函数类似于您将创建的这个值。
Javascript函数调用规则4
当你使用函数作为一个初始化函数,如MyFunction()和Javascript,该值将被指定为一个新的对象。
我想知道调用函数的不同方式会让你的sjavacript远离错误代码。其中一些bug将确保您始终知道,这是避免它们的第一步。