Vue源码分析:/* istanbul ignore next */
发布于 4 天前 作者 clubadmin 124 次浏览 来自 问答
粉丝福利 : 关注VUE中文社区公众号,回复视频领取粉丝福利

各位大神好,小弟最近在看Vue源码,遇到好几个地方都写了

/* istanbul ignore next */

不知道这句注释是什么意思,不知道各位大神可否给小弟解释一下?

还有一个问题:

    if (inBrowser) {
        try {
            var opts = {};
            Object.defineProperty(opts, 'passive', ({
                get: function get() {
                    /* istanbul ignore next */
                    supportsPassive = true;
                }
            })); // https://github.com/facebook/flow/issues/285
            window.addEventListener('test-passive', null, opts);
        } catch (e) {}
    }

这里有两个问题:

  1. 这个test-passive事件是干什么的?有什么用?
  2. 这个getter中为什么没有return?没有return怎么能拿到值呢?
7 回复

第二个问题,,应该算是回答了吧

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。

get,set 只是做数据拦截处理 ,返回 是在 Object.defineProperty() 中自带的吧 ? 我是这么理解的

那段代码作用是检测浏览器是否支持 addEventListener 的 passive 参数,详见:MDN addEventListener
其中 get 也只是起拦截作用,并不返回值。test-passive 也仅是随意起的一个事件名称,这个名称是什么不重要,重要的是利用 window.addEventListener('test-passive', null, opts); 这行代码来检测浏览器是否支持 passive 参数,如果支持就会执行 get,supportsPassive 就会被赋予 true,否则不变(supportsPassive 默认是 false)

Istanbul 是 JavaScript 程序的代码覆盖率工具。
/* istanbul ignore next */ 注释语法,允许某些代码不计入覆盖率。
下面2个问题我也不太懂,帮你找了篇文章:https://juejin.im/post/5ad804c1f265da504547fe68#heading-3

非常感谢您的帮助,谢谢您

get如果不错返回的话貌似是没有值得呢

谢谢,这是一篇很好的博客,我会好好看一下的,应该对我挺有帮助的。可是博客好像没有提到这个问题。

回到顶部