angular中controller、directive等为什么要用function包起来

学了一段时间angular,你有突然灵感一现,想过angular中controller、directive等为什么要用function包起来吗

既然只是想访问里面的变量和方法,为什么不直接用对象呢


让我猜一猜:

首先,function声明的时候做的事情你必须清楚,这里假装已经清楚了

function比对象的优点是:

1.function可以实现原型链继承;

2.function可以注入服务;

3.function函数执行时,会生成上下文,会创建的作用域链。

【插个小段:

上下文与作用域(scope)是不同的概念。Js本身是单线程的,每当有function被执行时,就会产生一个新的上下文,

这一上下文会被压入Js的上下文堆栈(context stack)中,function执行结束后则被弹出,

因此 Js解释器总是在栈顶上下文中执行。

生成新的上下文时
    

首先会绑定该上下文的变量对象,其中包括 arguments 和该函数中定义的变量;
   

  之后会创建属于 该上下文的作用域链 (scope chain);
    

最后将 this 赋予 这一function所属的Object

虽然我们不会调用声明controller时写的这个函数,但是这个函数为我们提供了相当的便利,这些是对象做不到的,但是函数却可以实现像对象一样访问其内部属性的功能。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值