苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4746|回复: 4

[JavaScript] 【零基础学习web前端】JavaScript 函数调用

[复制链接]
发表于 2018-12-20 16:31:50 | 显示全部楼层 |阅读模式
【零基础学习web前端】JavaScript 函数调用

【零基础学习web前端】教程目录导航


JavaScript 函数有 4 种调用方式。
每种方式的不同在于 this 的初始化。

this关键字:在Javascript中,this指向函数执行时的当前对象。注意 this 是保留关键字,你不能修改 this 的值。

作为一个函数调用
[HTML] 纯文本查看 复制代码
<p id="demo"></p>
<script>
function myFunction(a, b) {
	return a * b;
}
document.getElementById("demo").innerHTML = myFunction(10, 2); 

执行后返回值20.
以上函数不属于任何对象。但是在 JavaScript 中它始终是默认的全局对象。
在 HTML 中默认的全局对象是 HTML 页面本身,所以函数是属于 HTML 页面。
在浏览器中的页面对象是浏览器窗口(window 对象)。以上函数会自动变为 window 对象的函数。
myFunction() 和 window.myFunction() 是一样的:

[JavaScript] 纯文本查看 复制代码
function myFunction(a, b) {
    return a * b;
}
window.myFunction(10, 2);    // window.myFunction(10, 2) 返回 20

全局对象
当函数没有被自身的对象调用时 this 的值就会变成全局对象。
在 web 浏览器中全局对象是浏览器窗口(window 对象)。
该实例返回 this 的值是 window 对象:

[JavaScript] 纯文本查看 复制代码
function myFunction() {
	return this;
}
document.getElementById("demo").innerHTML = myFunction(); 

返回[object Window]。
函数作为方法调用
在 JavaScript 中可以将函数定义为对象的方法。
[JavaScript] 纯文本查看 复制代码
var myObject = {
    firstName:"John",
    lastName: "Doe",
    fullName: function() {
		return this.firstName + " " + this.lastName;
    }
}
document.getElementById("demo").innerHTML = myObject.fullName(); 

fullName 方法是一个函数。函数属于对象。 myObject 是函数的所有者。
this对象,拥有 JavaScript 代码。实例中 this 的值为 myObject 对象。
使用构造函数调用函数
这看起来就像创建了新的函数,但实际上 JavaScript 函数是重新创建的对象:
[JavaScript] 纯文本查看 复制代码
function myFunction(arg1, arg2) {
	this.firstName = arg1;
    this.lastName  = arg2;
}
var x = new myFunction("John","Doe")
document.getElementById("demo").innerHTML = x.firstName; 

执行后输出:John
作为函数方法调用函数
在 JavaScript 中, 函数是对象。JavaScript 函数有它的属性和方法。
call() 和 apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。
[JavaScript] 纯文本查看 复制代码
function myFunction(a, b) { return a * b; } myObject = myFunction.call(myObject, 10, 2); // 返回 20

[JavaScript] 纯文本查看 复制代码
function myFunction(a, b) {
    return a * b;
}
myArray = [10, 2];
myObject = myFunction.apply(myObject, myArray);  // 返回 20

如果函数调用前使用了 new 关键字, 则是调用了构造函数。
两个方法都使用了对象本身作为第一个参数。 两者的区别在于第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。
在 JavaScript 严格模式(strict mode)下, 在调用函数时第一个参数会成为 this 的值, 即使该参数不是一个对象。
在 JavaScript 非严格模式(non-strict mode)下, 如果第一个参数的值是 null 或 undefined, 它将使用全局对象替代。





1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2018-12-20 16:40:58 | 显示全部楼层
真是难得给力的帖子啊。
发表于 2018-12-20 16:51:20 | 显示全部楼层
我只是路过打酱油的。
发表于 2018-12-22 11:14:12 | 显示全部楼层
努力 什么时候 开始写个 插件的开发流程
发表于 2018-12-24 22:16:50 | 显示全部楼层
无回帖,不论坛,这才是人道。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-27 03:09

© 2014-2021

快速回复 返回顶部 返回列表