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. js DOM

    DOM 是 Document Object Model(文档对象模型)的缩写。(BOM  浏览器对象模型); […]...

  2. Js/Jquery 设置获取属性

    var tree = document.getElementById("tree"...

  3. 给你的jQuery项目赋予Router技能吧

    现在你不会React/Vue都不好意思说自己是前端,不过我相信很多前端项目还是基于jquery类库的传统模式的 […]...

  4. 前端编码规范

    最佳原则 坚持制定好的代码规范。 无论团队人数多少,代码应该同出一门。 命名规则 项目命名 全部采用小写方式, […]...

  5. webpack4打包nodejs项目进阶版——多页应用模板

    前段时间我写了个打包nodejs项目的文章,点击前往 但是,问题很多。因为之前的项目是个历史遗留项目,重构起来 […]...

  6. Vue-Day01

    Vue介绍 渐进式JavaScript框架 官网:https://cn.vuejs.org/ 开发版(在程序员 […]...

  7. js 控制文本只能输入数字 – Leepyng

    js 控制文本只能输入数字 代码如下: <input onkeypress=”setNumb […]...

  8. css js 解除网页无法选择进而复制的限制,bd文库无法复制

    先明确,遇到的问题到底是没有办法选中还是选中后复制了没效果,至于右键不出现菜单也是一样的原理,暂时不写,可以先 […]...

随机推荐

  1. [MySQL]命令行工具和基本操作 [MySQL]命令行工具和基本操作

      一 MySQL命令行工具  (查看帮助 —help,或 -?)   1)MySQL MySQL […]...

  2. 网络游戏逆向分析-6-使用背包物品call

    网络游戏逆向分析-6-使用背包物品call 网络游戏逆向分析-6-使用背包物品call 首先,大家在处理网络游 […]...

  3. JavaScript,JS如何控制input输入字符限制

    ENTER键可以让光标移到下一个输入框 <input onkeydown=”if(event […]...

  4. Java连载27-有返回值的方法注意点

    一、方法注意点 (1)方法的调用不一定再main方法中,可以在其他方法中进行调用,只要是程序执行到的位置,都可 […]...

  5. 掌握Redmine – zero_zz

    掌握Redmine 一个带有建议、技巧和最佳实践的全面指导和易懂易学的结构。 掌握Redmine 版权©201 […]...

  6. 推荐系统实践 0x11 NeuralCF

    前言 这一篇文章我们来谈一下2017年新加坡国立大学提出的基于深度学习的系统过滤模型NeuralCF。我们在之 […]...

  7. 听玄姐的职业成长,探技术人的道与术

    在前几天曾经在公众号(恰童鞋骚年)分享了一个直播的介绍,分享人孙玄(人称玄姐),他是前58集团技术委员会主席 […]...

  8. 主流浏览器版本发布历史

    译自:Release Histories for all Major Browsers中文:主流浏览器版本发布 […]...

展开目录

目录导航