问答详情
源自:9-2 实践(探测器)

他是如何实例的?是我漏了什么知识点吗

我有一点不明 ,为何他外面要套function(global){}(this).视频中说这是要防止变量或者内部函数泄露!!于是,为题来了,外部的对象是如何以里面的函数做为构造器的?东西都被封死了,如何在外部实例化?看了整个视频,就这里不理解

提问者:葛乌 2016-04-26 23:30

个回答

  • 慕工程2323135
    2020-09-25 17:55:08

      Object.defineProperties(global, {

        DetectorBase: { value: DetectorBase },

        LinkDetector: { value: LinkDetector },

        ContainerDetector: { value: ContainerDetector },

      });

    // 上边的定义把这些变量挂载到global上了,在浏览器相当于window.DetectorBase = DetectorBase;

  • weibo_宝慕林349606
    2016-09-17 12:33:11

    Object.defineProperties在全局定义了与那几个构造函数同名的属性,这些属性的值就是这几个构造函数,所以可以在全局通过这些属性访问到构造函数

  • CHWYH
    2016-04-30 11:30:04

    仅仅是立即执行的匿名函数,不是块级作用域   [块级作用域方法   function (){})()  块级作用域 函数外层有括号],这里写错啦,不好意思

  • CHWYH
    2016-04-30 11:25:27

    http://img.mukewang.com/572424c00001361806820493.jpg

    构造函数 和 原型对象的方法 都是 在 第一个 立即执行的匿名中(模拟的块级作用域:貌似),其中通过 Object。defineProperties  将部分 方法提升 到全局作用域 ,图中标蓝部分。所以外部可以使用。(貌似是这样的,如有不准确,请指正)