首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深入AngularJS源码,写自己的 JngularJS(3)

有时候想把一件事情用语言表达清楚的确要花一些心思和下一些功夫。说话沟通看是简单,其实要表达清楚明了确实不是容易的事。需要不断推敲,调整。如果表达不清楚,多半可能是作者本身没有很好理解和吃透他要讲述的内容。

8.当值为 Nan 应该如何判断相等

继续,我们都知道在 javascript 中有 NaN(Not-a-Number),代表非数字值的特殊值。这个值有一个特点,就是他无法和自身相等。想起来的确有些难于理解,但是事实就是这样。既然他有这样的特性我们在比较是否相当的方法中就需要对他有一些特殊关照。

测试代码段

9.$eval

Angularjs 提供许多以 scope (对象为上下文来)参数来执行代码的方式。最简单当属 $eval ,这个方法接受一个函数做为参数。然后在返回该函数时将 scope 做该返回函数的参数传入。

到这里大家可能会想为什么我们要这样调用一个函数,他的好处就是可以将 scope 作为参数传入,以便函数可以对 scope 进行一些操作。我们也希望传入一个字符串表达式,将表达式与 scope 关联来执行。这在随后给大家演示。

10.$apply

$apply()会触发整个应用中的所有scope上的$digset循环。意思就是,每次我们调用$apply()都会在整个应用的生命周期中开启一个新的$digset循环。

我们在不使用 angularjs 内置方法或第三方库的方法时,如果需要触发 $digest 我们都会使用 $apply 这个方法。我这里来简单地实现一下这个方法。

在 finally 我们调用 $digest 方法来确保 $digest 会被执行,即使报错。$apply 作用所在是在执行一些 Angularjs 不熟悉的代码时,如果这些代码改变了 scope,确保 watch 可以监视到 scope 的变化。

11. $evalAsync

异步贯穿于整个 javascript 语言,随处可见。也就是一些代码可能在将来某个不确定的点执行。我们会用到 setTimeout 来将代码在随后的某个时间执行。Angularjs 中也提供了类似的 $setTimeout 服务。在 scope 中也类似方法如用于如 scope 的 $evalAsync 这个方法,$evalAsync()的表达式会在当前$digset循环中执行而不是下一个循环中。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180213G02L7M00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券