您的位置:首页 > Web前端 > JavaScript

(2)Javascript之函数的多种调用方式

2016-12-29 20:21 477 查看
引言

函数的使用
1 函数的正常使用

2将函数当作类来使用

3将函数当作方法来使用类无返回值

4将函数当作方法来使用类有返回值

this关键字

函数的最后一种调用方式

1.引言

在javascript中函数对象是一个非常特殊的对象,在js中函数的使用也是相当的频繁,所以了解函数的一些用法也是非常有必要的,在本篇博客中就先介绍一下函数的几种用法。

2.函数的使用

2.1 函数的正常使用

代码

var b=function()
{
alert(1);
}
//或者
function b()
{
alert(1);
}
//调用时
b();


上面这种函数的使用方式,是最常见的。先定义一个函数,然后调用

2.2将函数当作类来使用

代码

function MyClass()
{
//此处写代码
};
var a=new MyClass();//函数的第二种调用方式


此处是将函数当作类来使用

2.3将函数当作方法来使用(类无返回值)

代码

function MyClass()
{
this._show=function(){

alert("1")
}
};
var a=new MyClass();
a._show();


a.show()
是将show当作类中的一个方法使用,此处注意函数与方法的区别,注意类MyClass是没有返回值的,缺点:假设_show是私有方法,外界还是可以被访问到

2.4将函数当作方法来使用(类有返回值)

function MyClass()
{
this._show=function(){
alert("1")
};
return {
show:this._show
}
};
var a=new MyClass();
a.show();


类有返回值和没有返回值的区别在于:将this._show()私有化了,然后暴露了一个访问接口show()方法。

3.this关键字

在js中this的使用相当灵活(在使用this的时候一定要慎用),总的来说:this指的是调用函数的那个对象。比如:

var c=10;
function MyClass()
{
this.c=5
this.show=function(){
alert(this.c);
}
};
var a=new MyClass();
a.show();//弹出5


函数被调用时是被a调用的,所以show中的this也就是MyClass的实例,所以弹出5。

然后我们看第二个实例

var c=10;
function MyClass()
{
this.c=5;
this.show=function(){
alert(this.c)
};
};
var a=new MyClass();
var b=a.show;
b();//弹出10


注意:当b调用的时候,是在window环境下调用的,所以当调用b(也就是调用show函数),此时this代表window,所以弹出的是10.

4.函数的最后一种调用方式

在上面我们可以看到this是非常灵活的,或许在不经意的时候,this的指向就改变了,这对于程序来说是非常危险的,函数的最后一种调用方式,便是控制this的指向,我们通过apply,或者call来调用函数

var c=10;
function MyClass()
{
this.c=5;
this.show=function(){
alert(this.c)
};
};
var a=new MyClass();
var b=a.show;
b.call(a);//弹出5
b.apply(a);//弹出5


上面利用call或者apply控制函数b调用时,函数内部的this环境为a,所以弹出为5.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: