广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >JavaScript函数调用规则有哪些
  • 900
分享到

JavaScript函数调用规则有哪些

2024-04-02 19:04:59 900人浏览 薄情痞子
摘要

本篇文章给大家分享的是有关javascript函数调用规则有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JavaScript函数调用规则

本篇文章给大家分享的是有关javascript函数调用规则有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

JavaScript函数调用规则一

(1)全局函数调用:

function makeArray( arg1, arg2 ){ 
return [this , arg1 , arg2 ]; 
}


这是一个最常用的定义函数方式。相信学习JavaScript的人对它的调用并不陌生。
调用代码如下:

makeArray('one', 'two'); 
// =﹥ [ window, 'one', 'two' ]


这种方式可以说是全局的函数调用。
为什么说是全局的函数?
因为它是全局对象window 的一个方法,
我们可以用如下方法验证:

alert( typeof window.methodThatDoesntExist ); 
// =﹥ undefined 
alert( typeof window.makeArray); 
// =﹥ function


所以我们之前调用 makeArray的方法是和下面调用的方法一样的

window.makeArray('one', 'two'); 
// =﹥ [ window, 'one', 'two' ]


JavaScript函数调用规则二

(1)对象方法调用:

//creating the object 
var arrayMaker = { 
someProperty: 'some value here', 
make: makeArray 
};


看到这里跟刚才的区别了吧,this的值变成了对象本身.
你可能会质疑:为什么原始的函数定义并没有改变,而this却变化了呢?

非常好,有质疑是正确的。这里涉及到 函数在JavaScript中传递的方式, 
函数在JavaScript 里是一个标准的数据类型,
确切的说是一个对象.你可以传递它们或者复制他们.
就好像整个函数连带参数列表和函数体都被复制,
且被分配给了 arrayMaker 里的属性 make,那就好像这样定义一个 arrayMaker :

var arrayMaker = { 
someProperty: 'some value here', 
make: function (arg1, arg2) { 
return [ this, arg1, arg2 ]; 
} 
};


如果不把调用规则二 弄明白,那么在事件处理代码中 经常会遇到各种各样的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﹥


点击***个按钮将会显示”btn1”,因为它是一个方法调用,this为所属的对象(按钮元素) 。
点击第二个按钮将显示”window”,因为 buttonClicked 是被直接调用的( 不像 obj.buttonClicked() ),
这和第三个按钮,将事件处理函数直接放在标签里是一样的.所以点击第三个按钮的结果是和第二个一样的。

所以请大家注意:

button1.onclick = buttonClicked; 
button2.onclick = function(){    
buttonClicked();    
};

this指向是有区别的。

JavaScript函数调用规则三

当然,如果使用的是Jquery库,那么你不必考虑这么多,它会帮助重写this的值以保证它包含了当前事件源元素的引用。

//使用jQuery 
$('#btn1').click( function() { 
alert( this.id ); // jQuery ensures 'this' will be the button 
});


那么 jQuery是如何重载this的值的呢?
答案是: call()和apply();

当函数使用的越来越多时,你会发现你需要的this 并不在相同的上下文里,这样导致通讯起来异常困难。

在Javascript中函数也是对象,函数对象包含一些预定义的方法,其中有两个便是apply()和call(),我们可以使用它们来对this进行上下文重置。

﹤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.call(this);  // btn2
};
﹤ /script﹥

JavaScript函数调用规则四

(1)构造器
我不想深入研究在Javascript中类型的定义,但是在此刻我们需要知道在Javascript中没有类,
而且任何一个自定义的类型需要一个初始化函数,使用原型对象(作为初始化函数的一个属性)定义你的类型也是一个不错的想法,
让我们来创建一个简单的类型

//声明一个构造器
function ArrayMaker(arg1, arg2) {
this.someProperty = 'whatever';
this.theArray = [ this, arg1, arg2 ];
}
// 声明实例化方法
ArrayMaker.prototype = {
someMethod: function () {
alert( 'someMethod called');
},
getArray: function () {
return this.theArray;
}
};

var am = new ArrayMaker( 'one', 'two' );
var other = new ArrayMaker( 'first', 'second' );
am.getArray();
// =﹥ [ am, 'one' , 'two' ]
other.getArray();
// =﹥ [ other, 'first', 'second'  ]


一个非常重要并值得注意的是出现在函数调用前面的new运算符,没有那个,你的函数就像全局函数一样,且我们创建的那些属性都将是创建在全局对象上(window),而你并不想那样。
另外一点,因为在你的构造器里没有返回值,所以如果你忘记使用new运算符,将导致你的一些变量被赋值为 undefined。

所以构造器函数以大写字母开头是一个好的习惯,这可以作为一个提醒,让你在调用的时候不要忘记前面的new运算符.

这样 初始化函数里的代码和你在其他语言里写的初始化函数是相似的.this的值将是你将创建的对象.

以上就是JavaScript函数调用规则有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网node.js频道。

--结束END--

本文标题: JavaScript函数调用规则有哪些

本文链接: https://www.lsjlt.com/news/67613.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript函数调用规则有哪些
    本篇文章给大家分享的是有关JavaScript函数调用规则有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JavaScript函数调用规则...
    99+
    2022-10-19
  • JavaScript函数中上下文有哪些规则
    目录1.规则1:对象.方法()1.1 案例11.2 案例21.3 案例31.4 案例42.规则2:函数()2.1 案例12.2 案例23.规则3:数组下标3.1 案例13.2 案例2...
    99+
    2022-11-12
  • Java函数的编码规则有哪些
    小编给大家分享一下Java函数的编码规则有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!内部函数参数尽量使用基础类型案例一:内部函数参数尽量使用基础类型现象描...
    99+
    2023-06-02
  • Python定义函数的规则有哪些
    Python函数定义规则:1.函数代码块以def关键词开头,后接函数名称和小括号(),小括号后的冒号“:”表示函数体的开始;2.函数以return语句结束,用于返回结果,不带表达式的return相当于返回None;3.函数体应遵循缩进语法;...
    99+
    2022-10-19
  • JavaScript中常用at规则有哪些
    本篇内容主要讲解“JavaScript中常用at规则有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript中常用at规则有哪些”吧! 常用a...
    99+
    2022-10-19
  • javascript正则函数都有哪些
    javascript中的正则函数有:1.test,检测一个字符串是否匹配某个模式;2.match,在字符串内检索指定的值;3.replace,在字符串中替换字符;4.search,检索字符串中指定的子字符串;javascript中的正则函数...
    99+
    2022-10-12
  • JavaScript中原型有哪些规则
    今天就跟大家聊聊有关JavaScript中原型有哪些规则,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。javascript是一种什么语言javascript是一种动态类型、弱类型的语...
    99+
    2023-06-14
  • JavaScript 中回调函数有哪些
    这期内容当中小编将会给大家带来有关JavaScript 中回调函数有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是函数函数是在其中有一组代码的逻辑构件,用来执行...
    99+
    2022-10-19
  • JavaScript正则表达式函数有哪些
    这篇文章主要为大家展示了“JavaScript正则表达式函数有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript正则表达式函数有哪些”这篇文...
    99+
    2022-10-19
  • javascript调用函数的方法有哪些
    javascript中调用函数的方法有:1.使用函数调用形式调用;2.使用方法调用;3.使用apply动态调用;4.使用new间接调用;javascript中调用函数的方法有以下几种使用函数调用形式调用函数function f(x,y) {...
    99+
    2022-10-15
  • JavaScript函数调用经典实例有哪些
    本篇内容介绍了“JavaScript函数调用经典实例有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JavaScript函数调用经典例题...
    99+
    2023-06-25
  • CSS常用的规则有哪些
    今天小编给大家分享一下CSS常用的规则有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2022-10-19
  • Overriding的使用规则有哪些
    这篇文章主要讲解了“Overriding的使用规则有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Overriding的使用规则有哪些”吧!01、什么是重写重写带来了一种非常重要的能力,...
    99+
    2023-06-15
  • 正则表达式常用规则有哪些
    这篇文章将为大家详细讲解有关正则表达式常用规则有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我们来看一下正则常用规则:一张图足以说明一切,哈哈哈!!方法:find()查找findall()查找所有内...
    99+
    2023-06-20
  • 数据库中加锁规则有哪些
    这篇文章主要介绍数据库中加锁规则有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!间隙锁再加上行锁,很容易在判断是否会出现锁等待的问题上犯错。因为间隙锁在可重复读隔离级别下才有效,...
    99+
    2022-10-18
  • 数据库命名的规则有哪些
    这篇文章给大家介绍数据库命名的规则有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。数据库命名规范 1 目的规范数据库各种对象的命名规则。2 数据库命名原则2.1 数据文件如果数据库...
    99+
    2022-10-18
  • JavaScript中回调函数的内容有哪些
    这篇文章将为大家详细讲解有关JavaScript中回调函数的内容有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。回调函数是每个 JS 开发人员都应该知道...
    99+
    2022-10-19
  • CSS通用命名规则有哪些
    这期内容当中小编将会给大家带来有关CSS通用命名规则有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。CSS规范化命名三种通用命名规则骆驼式命名法:正如它的名称所表示的...
    99+
    2022-10-19
  • CSS中@规则的用法有哪些
    CSS中@规则的用法有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。at-rule是一个声明,为CSS提供执行或怎么表现的...
    99+
    2022-10-19
  • HTML5中常用的规则有哪些
    今天小编给大家分享一下HTML5中常用的规则有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作