为什么angular中config要传入一个数组作为参数,而不是传两个参数

广告位招租
扫码页面底部二维码联系

Javascript中让初学者迷惑不解的【作者:唐霜】【原创不易,请尊重版权】,其实是它的对象数据类型。在JavaSc转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。ript中的对象是引用类型,这也就是说把【关注微信公众号:wwwtangshuangnet】【原创不易,请尊重版权】对象赋值给一个变量,仅仅表示这个变量拥有【关注微信公众号:wwwtangshuangnet】【版权所有,侵权必究】了指向对象内容所在内存的指针值,而非对象【原创不易,请尊重版权】【本文受版权保护】内容本身,因此当把对象内容的其中一个属性本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】赋值给另外一个变量时,可以利用这个变量做转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】更加高性能的操作。

【未经授权禁止转载】【本文首发于唐霜的博客】

这和今天的主题没有直接的联系,但是是作为【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。初学者理解JavaScript时必须掌握著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。的一个点。

【关注微信公众号:wwwtangshua转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】ngnet】本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。【作者:唐霜】

在angular里面,config的用法原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。如下:

【原创不易,请尊重版权】未经授权,禁止复制转载。未经授权,禁止复制转载。
angular.module("myApp", [])
  .config(["$routerProvider", $routerProvider => {
    // ...
  }])

这个用法很奇怪,为什么要把一个数组当做参【访问 www.tangshuang.net 获取更多精彩内容】本文作者:唐霜,转载请注明出处。数传给config呢,特别是当数组的元素本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。数据类型不同,第二个元素还是函数,就显得【关注微信公众号:wwwtangshuangnet】【转载请注明来源】非常让人意外,为什么不直接传两个参数,第【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】一个参数是个字符串,第二个参数是函数,这【转载请注明来源】【版权所有】唐霜 www.tangshuang.net不是非常容易理解吗?

本文版权归作者所有,未经授权不得转载。【作者:唐霜】【版权所有】唐霜 www.tangshu未经授权,禁止复制转载。转载请注明出处:www.tangshuang.netang.net转载请注明出处:www.tangshua转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。ng.net

但是在$routeProvider的wh【本文首发于唐霜的博客】原创内容,盗版必究。en中,resolve.data的值也是本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。一个类似的数组:

本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】
resolve: {
  data: ["$http", $http => {}]
}

如果函数的参数可以改为两个参数的话,这里【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。则不可能实现。

【版权所有】唐霜 www.tangshu【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。ang.net原创内容,盗版必究。原创内容,盗版必究。

由于JavaScript数据类型的特质,著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net没有Python里面的元组的概念。使用data: ("$http", $http => {})这种形式会出现错误。使用数组,是Java【版权所有】唐霜 www.tangshuang.net【作者:唐霜】Script里面的唯一的替代方案。

【未经授权禁止转载】原创内容,盗版必究。

不过从可读性的替代方案方面考虑,使用对象【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】可能会更有利于阅读,比如我们可以这样假设【访问 www.tangshuang.net 获取更多精彩内容】【关注微信公众号:wwwtangshuangnet】

本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshua著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。ngnet】【版权所有,侵权必究】【作者:唐霜】
resolve: {
  data: {
    key: "$http",
    callback: $http => {},
  }
}

不过这样在书写上会比较费劲,而且增加了代【原创内容,转载请注明出处】【访问 www.tangshuang.net 获取更多精彩内容】码量,更不利于参数作为中间值传递。使用数【原创不易,请尊重版权】未经授权,禁止复制转载。组的好处是除了可以在一行内写完需要的元素著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】外,还可以用于apply。一旦非常明确规【版权所有,侵权必究】【作者:唐霜】定数组元素的个数,或者像参数个数一样对个【本文首发于唐霜的博客】【版权所有,侵权必究】数进行判别,那么跟参数个数一样也具有严肃未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net性。

原创内容,盗版必究。【原创不易,请尊重版权】

但用于apply这点,使用数组有天然的优【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。越性。比如当你打算使用一个数组作为参数时著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net,可以直接:

【作者:唐霜】【版权所有】唐霜 www.tangshu本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】ang.net本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。
func.apply(this, args)

这样无需对接收到的数据做任何处理,就可以转载请注明出处:www.tangshuang.net【作者:唐霜】对该数据进行过滤等操作。

【版权所有,侵权必究】【版权所有】唐霜 www.tangshu原创内容,盗版必究。本文作者:唐霜,转载请注明出处。ang.net

不过如果使用ES5的话,这个问题比较容易转载请注明出处:www.tangshuang.net【版权所有,侵权必究】解决:

【版权所有】唐霜 www.tangshu【版权所有】唐霜 www.tangshuang.net【转载请注明来源】ang.net著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。
func(...arguments)

有这样的操作,就不需要传入一个数组。但是【访问 www.tangshuang.net 获取更多精彩内容】【版权所有,侵权必究】这仍然无法解释如何给data赋值的问题。

【原创内容,转载请注明出处】【未经授权禁止转载】【本文受版权保护】

另外就是要看,这个数组的第一个元素是一个【关注微信公众号:wwwtangshuangnet】【原创不易,请尊重版权】key值,是字符串,但是它其实对应的是全【转载请注明来源】原创内容,盗版必究。局某一个变量的key,也就是angula本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】r.$routerProvider这种形【原创不易,请尊重版权】【关注微信公众号:wwwtangshuangnet】式的数据,它可以用angular[转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】220;$routerProvider&【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】#8221;]来表示,而它一般就是一个函【版权所有,侵权必究】转载请注明出处:www.tangshuang.net数,在这个函数中会去回调原来数组中的第二【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】个元素,也就是带有$routerProv转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。ider的函数。这种设计,巧妙的运用了J未经授权,禁止复制转载。【版权所有,侵权必究】avaScript的特性,同时又使得程序【作者:唐霜】【原创内容,转载请注明出处】具有较大的灵活性。

【原创内容,转载请注明出处】本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】

2017-01-20 5239

为价值买单,打赏一杯咖啡

本文价值52.39RMB