文档章节

关于如何在javascript中实现DI

bosscheng
 bosscheng
发布于 2015/12/02 17:29
字数 263
阅读 33
收藏 0
ID

具体实现

function argumentNames(fn) {
    var ret;
    // 获取 字符串 形式
    var methodCode = fn.toString();
    // 获取 '()' 里面的 参数 
    methodCode.replace(/\((.*)\)/, function (match, g1) {
        var argStr = g1.replace(/\s/g, '');
        // 变成字符串
        ret = argStr.length ? argStr.split(',') : [];
    });

    return ret;
}

// test
argumentNames(function(a,b){}) // ['a','b']

具体的实现方式是:在代码运行的时候,拦截这个方法,然后把对应的模块传递给函数的上下文。例如现在的模块化加载实现,seajs,requirejs 中 define() require() 方法的实现,或者看angular的实现

angular.module('myModule',[]);
myModule.service('myService',function(a,b){});

对于这些框架的实现:首先对其传入的函数所做的第一件事情就是获取其参数列表,然后再把这个模块保存起来,这样就有了参数列表,也就知道了要注入多少个依赖,在接着,把对应的依赖传入,通过参数形式传进去。

具体代码实现:

待定





© 著作权归作者所有

共有 人打赏支持
bosscheng
粉丝 81
博文 303
码字总数 95443
作品 0
南京
前端工程师
私信 提问
iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge

iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge 转载:原地址 https://www.jianshu.com/p/e951af9e5e74 上一篇文章介绍了UIWebView 如何通过WebViewJavascriptBridge 来实现......

法斗斗
05/11
0
0
React Native iOS混合开发实战教程

在做RN开发的时候通常离不了JS 和Native之间的通信,比如:初始化RN时Native向JS传递数据,JS调用Native的相册选择图片,JS调用Native的模块进行一些复杂的计算,Native将一些数据(GPS信息,...

JiaPengHui
09/15
0
0
JavaScript浏览器地址栏特效之无敌风火轮特效

这篇文章和大家分享一个 javascript 在浏览器地址栏上的特效,非常的有趣。它可以使页面上所有的图片元素一个个得排列起来并不停的转圈。因为转圈弧度为半圆且棱角分明,我们姑且称之为风火轮...

脚本编程网站
2013/04/26
0
1
springrain vs jfianl的开发对比

废话不说,上实例 使用 jfinal最新版本 1.4 的 blog demo. 如果使用springrain 该怎么做呢? 总共分三步: 1.编写blog.sql 建表语句,花费2分钟左右时间 2.执行代码生成器,gen blog 并把生成文件...

光石头
2013/09/07
0
21
每个JavaScript工程师都应懂的33个概念

摘要: 基础很重要啊! 原文:33 concepts every JavaScript developer should know 译文:每个 JavaScript 工程师都应懂的33个概念 作者:stephentian Fundebug经授权转载,版权归原作者所有...

Fundebug
10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(8.3)wordcount程序运行过程的解析

上一篇博客分享了wordcount的源码编写、原理实现,本节将对wordcount在hadoop内部运行过程进行解析。 运行流程图如下: 上图中说明:mr appmaster启动后,会根据任务分配规则进行任务的启动,...

em_aaron
3分钟前
0
0
Zookeeper安装(LINUX环境)

一、上传安装包 二、解压安装包 mkdir -p /usr/lib/jvm tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/lib/jvm 三、修改配置文件 复制zoo_sample.cfg改名zoo.cfg 给zoo.cfg赋权 chmod 777 zoo.......

开源中国首席碉堡了
25分钟前
0
0
【面试必问】支撑百万并发的"IO多路复用"技术你了解吗?

多路复用其实并不是什么新技术,它的作用是在一个通讯连接的基础上可以同时进行多个请求响应处理。对于网络通讯来其实不存在这一说法,因为网络层面只负责数据传输;由于上层应用协议的制订问...

Java干货分享
28分钟前
2
0
Rotate Array(leetCode189)

Given an array, rotate the array to the right by k steps, where k is non-negative. Example 1: Input: [1,2,3,4,5,6,7] and k = 3Output: [5,6,7,1,2,3,4]Explanation:rotate 1 s......

woshixin
44分钟前
1
0
给女朋友讲解什么是Optional【JDK 8特性】

前言 只有光头才能变强 前两天带女朋友去图书馆了,随手就给她来了一本《与孩子一起学编程》的书,于是今天就给女朋友讲解一下什么是Optional类。 至于她能不能看懂,那肯定是看不懂的。(学到...

Java3y
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部