angular-如何实现注入依赖

时间:2022-01-09 11:02:29
js中没有反射的概念,那么angular是如何实现注入依赖的呢?

简单模拟一下~

var app = {
        scope : function () {
            this.name = 'lala';
        },
        controller : function (fn) {
            str = fn.toString();
            str = str.substring(str.indexOf( '(' )+1,str.indexOf( ')' )).replace(/\s/g,'');
            var arr = str.split(',');

            fn.apply(null, arr.map(function (item) {
                return new app[item]();
            }));
        }
    }

    app.controller(function (scope ) {
        console.log(scope.name);
    })
}

    /* scope是一个类, controller 是一个负责执行函数的函数, 首先将传入controller的参数,也就是fn函数转成字符串, 将传入fn的实参截取出来,去app里找到相应的类, 实例化后,再做参数传回给fn,并调用fn执行 */