var mylib = (function (global) {
function log(msg) {
console.log(msg);
}
log1 = log; // 法一:利用没有var的变量声明的默认行为,在log1成为全局变量(不推荐)
global.log2 = log; // 法二:直接在全局对象上添加log2属性,赋值为log函数(推荐)
return { // 法三:通过匿名函数返回值得到一系列接口函数集合对象,赋值给全局变量mylib(推荐)
log: log
};
}(window));function selfUpdate(){
window.selfUpdate = function(){
alert('second run!');
};
alert('first run!');
}
selfUpdate(); // first run!
selfUpdate(); // second run!log1 = log;这个log1既然是全局变量,为什么在函数外无法调用log: log这个是什么玩意
selfUpdate(); 为什么两次不同
function log(msg) {
console.log(msg);
}
log1 = log; // 法一:利用没有var的变量声明的默认行为,在log1成为全局变量(不推荐)
global.log2 = log; // 法二:直接在全局对象上添加log2属性,赋值为log函数(推荐)
return { // 法三:通过匿名函数返回值得到一系列接口函数集合对象,赋值给全局变量mylib(推荐)
log: log
};
}(window));function selfUpdate(){
window.selfUpdate = function(){
alert('second run!');
};
alert('first run!');
}
selfUpdate(); // first run!
selfUpdate(); // second run!log1 = log;这个log1既然是全局变量,为什么在函数外无法调用log: log这个是什么玩意
selfUpdate(); 为什么两次不同
解决方案 »
- 想用新浪滚动新闻的API在本地调去新闻,但是本地无法获取到
- 高手们 js怎么判断鼠标是否在标签上 但是不用事件判断 求高手帮忙
- javascript禁止鼠标右击事件。。
- jquery变量的变量,如何优化精简函数?
- 关于onmouseover
- 通过JavaScript传递某页面的URL,你们是怎么做的?
- 有一个超链接,点它后弹出一个300X300的页面,此页面是事先做好的 谢谢
- 如何去掉window.close();而带来的“你查看的网页正在试图关闭窗口,是否关闭此窗口?”
- 在一个frame里面包含一个含有框架的网页,请问怎样调用??
- 一代现成的顶踩JS代码,求大神帮忙修改为24小时只执行一次
- 需用JS列举出多个数字的全部组合方式,规则有些特殊,请教高手
- 展开隐蔽
{
p = 1
})();
alert(p);
p可以用啊。function selfUpdate(){
window.selfUpdate = function(){
alert('second run!');
};
alert('first run!');
}
window.selfUpdate(); // first run!
window.selfUpdate(); // second run!
其实两次都是调的window.selfUpdate,只不过第一次调用之后把新的地址函数地址赋值给了selfUpdate,就好比window.selfUpdate=function(){
window.selfUpdate = function(){
alert('second run!');
};
alert('first run!');
}
2.{log:log}是匿名函数(function(global){...})执行后返回的一个对象,该对象含有一个名叫log的属性且属性值为匿名函数内的log函数(function log(msg){...}),这里只不过是属性名称和函数名称刚好相同而已。最终,返回的这个对象被赋给变量mylib。
3.selfUpdate函数第一次执行时发生了两个个操作,一个是重新定义selfUpdate函数为弹出"second run",另一个是弹出"first run"。selfUpdate第二次执行的时候,此时它(因为第一次执行时的重定义)已经变成(可以理解为:function selfUpdate(){alert('second run')})新的函数,所以弹出"second run"。