Javascript 文档与$document的角度差异

Javascript 文档与$document的角度差异,javascript,angularjs,Javascript,Angularjs,在开发Angular的应用程序时使用文档和$document有什么区别? 我读到最好使用angular的等价物,如: $window而不是window或$timeout而不是setTimeout 但是。。。为什么? 我认为窗口,设置超时和文档更快,因为它们是本地的,不需要“通过”角度框架的代码 使用Angular的等价物而不是JS中的本机函数、对象是否更好?以下内容始终正确: $window.document===$document[0]$document是一个jQuery对象,$(docume

在开发Angular的应用程序时使用
文档
$document
有什么区别? 我读到最好使用angular的等价物,如:
$window
而不是
window
$timeout
而不是
setTimeout

但是。。。为什么? 我认为
窗口
设置超时
文档
更快,因为它们是本地的,不需要“通过”角度框架的代码

使用Angular的等价物而不是JS中的本机函数、对象是否更好?

以下内容始终正确:
$window.document===$document[0]

$document
是一个jQuery对象,
$(document)

所以基本上你应该能够做到:

$document[0].property = document.property

您可以查看一个示例。

通过使用$document和$window的angular services,您可以准备好代码单元测试。 这种依赖注入允许您在测试中使用$document或$window的模拟版本


上面提到的性能影响可以忽略。

您应该使用角度包装器,BCU它不会破坏与模型->视图的角度同步


对于exmaple,如果使用setTimeout,则必须使用$digest()范围来刷新视图中的值,如果计划更改某些模型值,另一方面,如果使用$timeout,则无需执行此操作,因为函数结束后范围将刷新

完全同意您的意见。。是的,本机代码更快,但我理解的原因是,新的angular开发人员在您之后可能不理解本机代码。。也许这就是为什么。但我想知道为什么(或者确切地说是如何)人们在不知道本机代码中发生了什么的情况下学习angularJS?看看angularJS文档是怎么说的:浏览器的window.document对象的jQuery或jqLite包装器。这将帮助你