龙空技术网

javascript中函数的四种调用模式

开心僧GotS 142

前言:

目前姐妹们对“js中如何调用函数”都比较关注,你们都需要了解一些“js中如何调用函数”的相关知识。那么小编同时在网摘上网罗了一些有关“js中如何调用函数””的相关知识,希望兄弟们能喜欢,小伙伴们一起来学习一下吧!

一.函数模式

函数模式是任何一种编程语言中最常见的模式,我们知道函数要调用,必须先声明。

第一步:声明函数function fun(){		console.log(this);}第二步:调用函数fun()        //打印结果为window

在函数模式中,函数内部的this指向window

二.方法模式

方法模式指函数调用时,函数名前有宿主对象。

var obj = {	    name:"jack",      say:function(){            console.log(this);      }}调用say方法obj.say();       //打印结果为对象obj

方法模式与函数模式的区别在于函数调用时,函数的前面是否有宿主对象,有则是方法模式,无则是函数模式

三.构造器模式

构造器模式是用来批量的生产对象的,一般用于面向对象编程中。

第一步:声明函数function Person(name,age){	   this.name = name;     this.age = age;}第二步:调用函数var p1 = new Person("tom",4);var p2 = new Person("jerry",5);...

构造器模式是最容易判断出来的,在函数调用时前面有关键词new。这里没有举例函数中的方法问题,如有兴趣可以查看一下原型的概念prototype.

四.上下文调用模式

上下文调用模式是根据当前环境判断是函数模式还是方法模式,统一了一种格式实现了函数模式与方法模式。目的是为了函数的借用。

上下文调用模式的语法分为两种apply与call。

function fn(){	console.log(this);}var p = {    name:"jack"}------以上声明了一个函数fn与声明了一个变量对象p-----	fn.call()或fn.apply() 这两种形式都是函数模式,相当于fn(),this打印出来是window  fn.call(p)或fn.apply(p)这种形式都是方法模式,相当于p.fn(),this打印出来是p

call与apply语法是函数模式与方法模式的区别就在第一个参数。

如果没有第一个参数或参数为null,就是函数模式。如fn.call()没有参数。

如果存在第一个参数,就是方法模式。如fn.call(p)有参数p。

call与apply的区别:

call与apply的区别在于原函数是否有参数。

function sum(x,y){	return x+y;}var p = {	name:"tom"}

以下是几种调用形式的比较:

sum.call(null,1,2) => 相当于sum(1,2)

sum.apply(null,[1,2]) => 相当于sum(1,2)

sum.call(p,1,2) => 相当于p.sum(1,2)

sum.apply(p,[1,2]) => 相当于p.sum(1,2)

call与apply的区别在于原函数的参数表现形式:call作为第二个参数依次往后排列,apply只有第二个参数,该参数是一个数组。

标签: #js中如何调用函数