作家
登录

深入理解JavaScript错误和堆栈追踪

作者: 来源: 2017-04-25 17:10:21 阅读 我要评论

如今让我们来看看@meeber在这个令人赞叹的PR中提交的代码。

在你开端看下面的代码之前,我必须告诉你addChainableMethod办法是干啥的。它将传递给它的链式办法添加到断言上,它也用包含断言的办法标记断言本身,并将其保存在变量ssfi(启动客栈函数指导符)中。这也就意味着当前断言将会是客栈中的最后一个调用帧,是以我们不会在客栈中显示Chai中的任何进一步的内部办法。我没有添加全部代码,因为它做了很多工作,有点棘手,但如不雅你想读它,点我浏览。

下面的┞封个代码片段中,我们有一个lengOf断言的逻辑,它检查一个对象是否有必定的length。我们欲望用户可以像如许来应用它:expect(['foo', 'bar']).to.have.lengthOf(2)。

  1. function assertLength (n, msg) { 
  2.     if (msg) flag(this, 'message', msg); 
  3.     var obj = flag(this, 'object'
  4.         , ssfi = flag(this, 'ssfi'); 
  5.  
  6.     // Pay close attention to this line 
  7.     new Assertion(obj, msg, ssfi, true).to.have.property('length'); 
  8.     var len = obj.length; 
  9.  
  10.     // This line is also relevant 
  11.     this.assert( 
  12.             len == n 
  13.         , 'expected #{this} to have a length of #{exp} but got #{act}' 
  14.         , 'expected #{this} to not have a length of #{act}' 
  15.         , n 
  16.         , len 
  17.     ); 
  18.  
  19. Assertion.addChainableMethod('lengthOf', assertLength, assertLengthChain); 

Assertion.addChainableMethod('lengthOf', assertLength, assertLengthChain);

在膳绫擎的代码片段中,我凸起强调了与我们如今相干的代码。让我们大年夜调用this.assert开端说起。

以下是this.assert办法的源代码:

  1. Assertion.prototype.assert = function (expr, msg, negateMsg, expected, _actual, showDiff) { 
  2.     var ok = util.test(this, arguments); 
  3.     if (false !== showDiff) showDiff = true
  4.     if (undefined === expected && undefined === _actual) showDiff = false
  5.     if (true !== config.showDiff) showDiff = false
  6.  
  7.     if (!ok) { 
  8.         msg = util.getMessage(this, arguments); 
  9.         var actual = util.getActual(this, arguments); 
  10.  
  11.         // This is

      推荐阅读

      深度卷积神经网络在目标检测中的进展

    近些年来,深度卷积神经收集(DCNN)在图像分类和辨认上取得了很明显的进步。回想大年夜 2014 到 2016 这两年多的时光,先后出现出了 R-CNN,Fast R-CNN, Faster R-CNN, ION, HyperNet, SD>>>详细阅读


    本文标题:深入理解JavaScript错误和堆栈追踪

    地址:http://www.17bianji.com/lsqh/34953.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)