js函数之四大调用模式

nianzhilian 2018-03-06 原文

js函数之四大调用模式

一、方法调用模式

当一个函数调用保存为一个对象的属性时我们称之为方法调用。

var myObject = {
            value:0,
            increment:function(inc){
                this.value += typeof inc === 'number' ? inc : 1;
            }
        }
        myObject.increment();
        document.writeln(myObject.value)
        myObject.increment(3);
        document.writeln(myObject.value)

方法可以使用this访问自己所属的对象,所有它能从对象中访问value并修改value属性 当this对象发生在调用的时候  这个超级延时绑定 可以对this高度复用。

二、函数调用模式

var add = function(num1,num2){
            if(typeof num1!=='number' || typeof num2!=='number'){
                throw{
                    name:'error',
                    message:'param is not number'
                }
            }
            return num1 + num2
        }

        myObject.dobule = function(){
            var that = this;
            var helper = function(){
                try {
                    that.value = add(that.value,that.value);
                } catch (e) {
                    document.writeln('name'+e.name+'message'+e.message)
                }
            }
            helper();//函数式调用
        }

        myObject.dobule();
        document.writeln(myObject.value);

 以此模式调用函数时this指的是全局对象,这是语言上设计的一个错误。幸运的是这有一个容易的解决方案 在函数内部定义一个变量赋值this, 那么内部函数就可以通过函数内部的变量访问this。

三、构造器式调用js是基于原型继承的语言 不像其他编程语言是基于类的。但是js也提供了一套和基于类的语言类似的对象构建语法

var Fu = function(str){
            this.name = str;
        }
        //通过原型继承扩展方法
        Fu.prototype.get_name = function(){
            return this.name
        }
        // 模拟构造一个新的对象实例
        var fu = new Fu('张三');
        // 函数式调用方法
        document.writeln(fu.get_name());

 如果创建函数的目的是为了结合new来调用 那它就被称为构造器式调用

四、apply调用模式

var array = [3,4];
var sum = function(){
    try {
                   add.apply(null,array);
                } catch (e) {
                    document.writeln('name'+e.name+'message'+e.message)
                }
}

//函数式调用
document.writeln(sum());

apply用法

发表于 2018-03-06 22:09 nianzhilian 阅读() 评论() 编辑 收藏

 

版权声明:本文为nianzhilian原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/nianzhilian/p/8519475.html

js函数之四大调用模式的更多相关文章

  1. 在IIS服务器上本地部署 ArcGIS API for js 4.15

    作为一名刚入门的小白,还没开始一个helloworld就在软件安装,环境部署时遇到了一大堆问题,简直太让人头秃 […]...

  2. JSON.stringify和JSON.parse()是如何使用的?

    经常做前后端数据交互的程序员就知道,json的使用是必不可少的,那么在json中JSON.stringify和 […]...

  3. js 调用手机摄像头或相册并展示图片

    js 调用手机摄像头或相册并展示图片   效果图 手机浏览器、微信打开该网页,都支持调用摄像头拍照和打开相册。 […]...

  4. HTML5 使用浏览器内置数据库之 indexedDB

    indexedDB是H5规范里的浏览器内置数据库,是nosql数据库的一种。因为另一种数据库Web SQL不再 […]...

  5. 【vue系列之三】从一个vue-pdf-shower,说说vue组件和npm包

    前言 从去年年初开始,自己便下决心要写一个vue系列的博客,但时至今日,才写系列的第三篇博客,想来甚是惭愧。 […]...

  6. JS 文本框校验–限制文本框只能输入数字,数字和字母等的正则表达式

    注意:live() 方法在 jQuery 版本 1.7 中被废弃,在版本 1.9 中被移除。请使用 on() […]...

  7. 实现JavaScript继承

    使用TypeScript或者ES2015+标准中的extends关键字是很容易实现继承的,但这不是本文的重点。 […]...

  8. js for循环中点击事件中无法获取每一个i值的问题

    好像是第二次遇到这个问题,必须要总结一下!! 1 <!DOCTYPE html> 2 <ht […]...

随机推荐

  1. Emgu.CV怎么加载Bitmap

     EmguCV 在4.0.1版本之后没办法用Bitmap创建Image了。 我给大家说下 EmguCV怎么加载 […]...

  2. iOS原生Xcode工程接入 TapTapSDK

    本次目标是 接入TapTapSDK 几个模块1 账号登陆 - TDS 内建账户服务2 事件上报3 防沉迷 - 快速认证 环境介绍Xcode 13.2 + 上一篇笔记中的creator3.5.1 导出游戏工程TapSDK_iO...

  3. 蓝牙spp协议分析

    基本概念 蓝牙串口是基于 SPP 协议(Serial Port Profile),能在蓝牙设备之间创建串口进行 […]...

  4. 行业分析 – .波特五力模型分析

    行业分析的要点: 这个行业的未来成长性是否具有投资价值。 行业内的龙头企业是哪些。 行业内的竞争取得超越竞争对 […]...

  5. 20145212罗天晨 后门原理与实践

    20145212罗天晨 后门原理与实践 基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? […]...

  6. 估计理论 – 木lin木

    估计理论 转自:http://zh.wikipedia.org/wiki/%E4%BC%B0%E8%AE%A1 […]...

  7. Centos删除多余的Linux内核

    删除开机多余kernel(centos) yum update 命令会大范围升级,有时候linux内核也会升级 […]...

  8. 一个由CountDownLatch引发的Bug

    最近恢复Venus的工作,恰逢十一假期尾声,突发一个Bug,让人匪夷所依。我们今天快速倒序追踪,层层回顾。 1 […]...

展开目录

目录导航