博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS函数调用方式
阅读量:4323 次
发布时间:2019-06-06

本文共 1361 字,大约阅读时间需要 4 分钟。

1、作为函数调用

function myFunction(a, b) {    return a * b;}myFunction(10, 2);

 这是JS中函数调用的常见方法,但不是良好编程习惯。全局变量,方法或函数容易造成命名冲突的bug。

 函数作为全局对象调用,会使 this 的值成为全局对象。使用 window 对象作为一个变量容易造成程序崩溃。

2、作为对象的方法调用

var myObject = {    firstName:"John",    lastName: "Doe",    fullName: function () {        return this.firstName + " " + this.lastName;    }}myObject.fullName();

 

函数作为对象方法调用,会使得 this 的值成为对象本身,这里指向myObject对象。

3、使用构造函数调用

如果函数调用前使用了 new 关键字, 则是调用了构造函数。

这看起来就像创建了新的函数,但实际上 JavaScript 函数是重新创建的对象

// 构造函数:function myFunction(arg1, arg2) {    this.firstName = arg1;    this.lastName  = arg2;}// This creates a new objectvar x = new myFunction("John","Doe");x.firstName;

构造函数的调用会创建一个新的对象。新对象会继承构造函数的属性和方法。

构造函数中 this 关键字没有任何的值。this 的值在函数调用时实例化对象(new object)时创建。

4、作为函数方法调用函数

在 JavaScript 中, 函数是对象。JavaScript 函数有它的属性和方法。

call() 和 apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。

function myFunction(a, b) {    return a * b;}myFunction.call(myObject, 10, 2); myArray = [10,2]; myFunction.apply(myObject, myArray);

 关于call和apply的说明:

两个方法都使用了对象本身作为第一个参数。 两者的区别在于第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。

在 JavaScript 严格模式(strict mode)下, 在调用函数时第一个参数会成为 this 的值, 即使该参数不是一个对象。

在 JavaScript 非严格模式(non-strict mode)下, 如果第一个参数的值是 null 或 undefined, 它将使用全局对象替代。

通过 call() 或 apply() 方法你可以设置 this 的值, 且作为已存在对象的新方法调用。

 

转载于:https://www.cnblogs.com/hemi/p/4284431.html

你可能感兴趣的文章
java 多线程的应用场景
查看>>
dell support
查看>>
转:Maven项目编译后classes文件中没有dao的xml文件以及没有resources中的配置文件的问题解决...
查看>>
MTK android 设置里 "关于手机" 信息参数修改
查看>>
单变量微积分笔记6——线性近似和二阶近似
查看>>
补几天前的读书笔记
查看>>
HDU 1829/POJ 2492 A Bug's Life
查看>>
CKplayer:视频推荐和分享插件设置
查看>>
CentOS系统将UTC时间修改为CST时间
查看>>
redis常见面试题
查看>>
导航控制器的出栈
查看>>
玩转CSS3,嗨翻WEB前端,CSS3伪类元素详解/深入浅出[原创][5+3时代]
查看>>
iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置
查看>>
Delphi消息小记
查看>>
JVM介绍
查看>>
将PHP数组输出为HTML表格
查看>>
经典排序算法回顾:选择排序,快速排序
查看>>
BZOJ2213 [Poi2011]Difference 【乱搞】
查看>>
一道关于员工与部门查询的SQL笔试题
查看>>
Canvas基础
查看>>