javascrip函数自调用


(function (window){
    function MyDate(){}
    MyDate.now=function (){
        console.log('静态方法')
    }
    MyDate.prototype.getD=function (){
        console.log('原型方法')
    }
    window.MyDate = MyDate
})(window)

img

这俩个地方写window参数的原因是什么呀,这样写有啥什么作用吗?

(function(window) {})(window)
可以简化看成这样()();
而()()就是一个匿名函数自执行的写法。

圆括号中的window为实参,接受window对象(window对象是全局环境下的)。
而function后面的圆括号中的window为局部变量,不是全局的window对象.
所以这样写可以提高js性能,减少作用域链查询时间。

望采纳!!!点击回答右侧采纳即可!!

在这个代码中,window 参数被用作一个命名空间,用于将 MyDate 函数和它的静态方法 now 和原型方法 getD 注册到全局对象 window 上。

具体来说,这个代码将定义了一个 MyDate 函数,然后将它的静态方法 now 和原型方法 getD 定义在 MyDate 上。最后,它将 MyDate 函数赋值给 window 对象的一个属性,使得 MyDate 函数和它的方法可以在全局范围内使用。

因此,在调用 MyDate.now() 或 new MyDate().getD() 时,都可以在全局范围内访问到这些方法。

如果将 window 参数省略掉,那么 MyDate 函数和它的方法就只能在当前脚本的作用域内使用,无法在全局范围内访问到。