前言:
目前姐妹们对“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中如何调用函数