zoukankan      html  css  js  c++  java
  • js的调用函数前先执行某语句问题

    js的调用函数前先执行某语句问题

    标签: web前端面试
     分类:

    前几天去笔试,做了一道题,给Function添加一个新的方法c,在调用c的时候,先执行c的回调,再执行原函数的语句。要求写出c函数。(大概这个意思吧。。。看不懂,看代码吧) 
    例:

    function a(){alert("after");}
    a.c(function(){alert("before");});
    ///////
    before  //执行a.c之后出来的结果
    after
    • 1
    • 2
    • 3
    • 4
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5

    当时做不出来,之后问了一下别人,他告诉我说,他见得比较多的是在调用某个已有函数前先执行某些语句的那种题,大概是这样的。

    //调用$.ajax函数,要求先执行ajaxBefore()
    var _ajax=$.ajax;
    $.ajax=function(){ajaxBefore();_ajax.call(this,arguments);}
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3

    原理就是先把原函数保存下来,然后修改函数,先调用先执行的语句,再调用回原函数

    那其实面试题的要求也是差不多的,只是它是调用另外一个函数去实现而已。 
    对于要实现c函数,执行before部分比较简单,用回调函数就好,但对于如何获得a函数的内容,当时就想不出来的 
    最近看书看到了对象的构造器属性时,才有一点头绪。 
    当我们创建对象时(a),实际上同时赋予了该对象构造器属性,而该属性实际上指向用于创建该对象的构造器函数的引用。

    ok,那之前的问题就搞掂啦,

    Function.prototype.c=function(callback){
        callback();
        this.call(this.constructor);
    }
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4

    就这样。。。。。

  • 相关阅读:
    手机发送验证码—.net代码
    AJAX之XMLHttpRequest
    JQuery总结+实例
    ASP.NET总结——更改后
    css总结——position
    JavaScript的程序构成
    初识javascript
    asp总结
    北大青鸟代码---asp.net初学者宝典
    iOS常用技术-Label自适应
  • 原文地址:https://www.cnblogs.com/developer-ios/p/7405499.html
Copyright © 2011-2022 走看看