你如何测试只在闭包范围内可见的javascript方法?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了你如何测试只在闭包范围内可见的javascript方法?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1749字,纯文字阅读大概需要3分钟。
内容图文
![你如何测试只在闭包范围内可见的javascript方法?](/upload/InfoBanner/zyjiaocheng/784/ccd5ef4e837b4c688223a945b327d315.jpg)
说我有以下javascript:
function Foo() {
function privateStuff() {
//do private stuff
}
this.publicStuff = function() {
privateStuff();
//do other stuff
}
}
通过执行以下操作来测试publicStuff()很容易:
var myFoo = new Foo();
myFoo.publicStuff();
//all the assertions
但是,我希望能够将privateStuff()方法作为自己的单元进行测试.我不确定我怎么可以自己调用它.我知道用Java(我更熟悉它)你可以使用反射来测试私有方法,但我想知道是否有任何方法可以自己测试这些函数.如果没有一般的方法,我已经开始玩Jasmine来运行我的单元测试.这个框架是否为此提供了任何功能?
解决方法:
你有代码的方式,你不能.您不允许任何内容对privateStuff进行作用域访问.在我看来,你需要阅读闭包的概念(这是JavaScript的基础).
每当你在JS中使用f(){…}构造(以及其他几个,比如try-catch块)时,你总是隐式地创建一个闭包.嵌套函数完全合法,但除非您为外部函数提供内部函数的外部引用,否则只能从外部函数中访问内部函数.
从Mozilla开始:
You can nest a function within a function. The nested (inner) function is private to its containing (outer) function. It also forms a closure.
A closure is an expression (typically a function) that can have free
variables together with an environment that binds those variables
(that “closes” the expression).Since a nested function is a closure, this means that a nested
function can “inherit” the arguments and variables of its containing
function. In other words, the inner function contains the scope of the
outer function.
- The inner function can be accessed only from statements in the outer function.
- The inner function forms a closure: the inner function can use the arguments and
即使Mozilla文档延续了这一点,但在Javascript中说东西是私有的或公开的稍微不正确,因为命名法在大多数编程语言(如C和Java)中具有非常明确的含义,这与多态行为或继承有关.就JS而言,最好将其视为范围有限并尝试深入了解闭包.
内容总结
以上是互联网集市为您收集整理的你如何测试只在闭包范围内可见的javascript方法?全部内容,希望文章能够帮你解决你如何测试只在闭包范围内可见的javascript方法?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。