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

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.
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值