javascript怎么调用函数
这篇文章给大家分享的是有关javascript怎么调用函数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
javascript的调用函数方法有:1、使用makeArray函数作为它的一个方法,使用json的方式来声明一个对象;2、使用【obj.myFunction()】方法调用语法。
本教程操作环境:windows7系统、javascript1.8.5版,DELL G3电脑。
javascript的调用函数方法有:
JavaScript函数调用规则1
在没有通过明确所有者对象而直接调用的函数中,如myFunction(),将导致this的值成为默认对象(浏览器中的窗口)。
函数调用
让我们现在创建一个简单的对象,使用 makeArray函数作为它的一个方法,我们将使用json的方式来声明一个对象,我们也来调用这个方法
//creating the objectvar arrayMaker = { someProperty: 'some value here', make: makeArray}; //invoke the make() methodarrayMaker.make('one', 'two');// => [ arrayMaker, 'one', 'two' ]// alternative syntax, using square bracketsarrayMaker['make']('one', 'two');// => [ arrayMaker, 'one', 'two' ]
看到这里的不同了吧,this的值变成了对象本身.你可能会疑问原始的函数定义并没有改变,为何它不是window了呢.好吧,这就是函数在JSavacript中传递的方式,函数在JavaScript里是一个标准的数据类型,确切的说是一个对象.你可以传递它们或者复制他们.就好像整个函数连带参数列表和函数体都被复制,且被分配给了 arrayMaker里的属性make,那就好像这样定义一个 arrayMaker:
var arrayMaker = { someProperty: 'some value here', make: function (arg1, arg2) { return [ this, arg1, arg2 ]; }};
JavaScript函数调用规则2
在一个使用方法调用语法,像 obj.myFunction()或者 obj['myFunction'](),这时this的值为obj
这是事件处理代码中bug的主要源头,看看这些例子
<input type="button" value="Button 1" id="btn1" /><input type="button" value="Button 2" id="btn2" /><input type="button" value="Button 3" id="btn3" onclick="buttonClicked();"/> <script type="text/javascript">function buttonClicked(){ var text = (this === window) ? 'window' : this.id; alert( text );}var button1 = document.getElementById('btn1');var button2 = document.getElementById('btn2'); button1.onclick = buttonClicked;button2.onclick = function(){ buttonClicked(); };</script>
点击第一个按钮将会显示”btn”因为它是一个方法调用,this为所属的对象(按钮元素) 点击第二个按钮将显示”window”因为 buttonClicked是被直接调用的(不像 obj.buttonClicked().) 这和我们第三个按钮,将事件处理函数直接放在标签里是一样的.所以点击第三个按钮的结果是和第二个一样的.
使用像jQuery的JS库有这样的优点,当在jQuery里定义了一个事件处理函数,JS库会帮助重写this的值以保证它包含了当前事件源元素的引用,
//使用jQuery$('#btn1').click( function() { alert( this.id ); // jQuery ensures 'this' will be the button});
感谢各位的阅读!关于“javascript怎么调用函数”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341