为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

4 回答

  Object.defineProperties(global, {

    DetectorBase: { value: DetectorBase },

    LinkDetector: { value: LinkDetector },

    ContainerDetector: { value: ContainerDetector },

  });

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

0 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//572424c00001361806820493.jpg

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信