最近在接触mui的时候,遇到了一段代码:

  1 (function($, doc) {
2 $.init({
3 statusBarBackground: '#f7f7f7'
4 });
5 $.plusReady(function() {
6 plus.screen.lockOrientation("portrait-primary");
7 var settings = app.getSettings();
8 var state = app.getState();
9 var mainPage = $.preload({
10 "id": 'main',
11 "url": 'tab-webview-main.html'
12 });
13 var main_loaded_flag = false;
14 mainPage.addEventListener("loaded",function () {
15 main_loaded_flag = true;
16 });
17 var toMain = function() {
18 //使用定时器的原因:
19 //可能执行太快,main页面loaded事件尚未触发就执行自定义事件,此时必然会失败
20 var id = setInterval(function () {
21 if(main_loaded_flag){
22 clearInterval(id);
23 $.fire(mainPage, 'show', null);
24 mainPage.show("pop-in");
25 }
26 },20);
27 };
28
29 // close splash
30 setTimeout(function() {
31 //关闭 splash
32 plus.navigator.closeSplashscreen();
33 }, 600);
34 var loginButton = doc.getElementById('login');
35 var accountBox = doc.getElementById('account');
36 var passwordBox = doc.getElementById('password');
37 var autoLoginButton = doc.getElementById("autoLogin");
38 var regButton = doc.getElementById('reg');
39 var forgetButton = doc.getElementById('forgetPassword');
40 loginButton.addEventListener('tap', function(event) {
41 var username = $('#account').val();
42 var password = $('#password').val();
43
44 // LeanCloud - 登录
45 // https://leancloud.cn/docs/leanstorage_guide-js.html#用户名和密码登录
46 AV.User.logIn(username, password).then(function (loginedUser) {
47 toMain();
48 }, function (error) {
49 // 导入AlertDialog类
50 var AlertDialog = plus.android.importClass("android.app.AlertDialog");
51 // 创建提示框构造对象,构造函数需要提供程序全局环境对象,通过plus.android.runtimeMainActivity()方法获取
52 var dlg = new AlertDialog.Builder(plus.android.runtimeMainActivity());
53 // 设置提示框标题
54 dlg.setTitle("登陆失败");
55 // 设置提示框内容
56 dlg.setMessage("用户名或密码不正确!"+JSON.stringify(error));
57 // 设置提示框按钮
58 dlg.setPositiveButton("OK",null);
59 // 显示提示框
60 dlg.show();
61 });
62 });
63 $.enterfocus('#login-form input', function() {
64 $.trigger(loginButton, 'tap');
65 });
66 autoLoginButton.classList[settings.autoLogin ? 'add' : 'remove']('mui-active')
67 autoLoginButton.addEventListener('toggle', function(event) {
68 setTimeout(function() {
69 var isActive = event.detail.isActive;
70 settings.autoLogin = isActive;
71 app.setSettings(settings);
72 }, 50);
73 }, false);
74 regButton.addEventListener('tap', function(event) {
75 $.openWindow({
76 url: 'reg.html',
77 id: 'reg',
78 preload: true,
79 show: {
80 aniShow: 'pop-in'
81 },
82 styles: {
83 popGesture: 'hide'
84 },
85 waiting: {
86 autoShow: false
87 }
88 });
89 }, false);
90 forgetButton.addEventListener('tap', function(event) {
91 $.openWindow({
92 url: 'forget_password.html',
93 id: 'forget_password',
94 preload: true,
95 show: {
96 aniShow: 'pop-in'
97 },
98 styles: {
99 popGesture: 'hide'
100 },
101 waiting: {
102 autoShow: false
103 }
104 });
105 }, false);
106 //
107 window.addEventListener('resize', function() {
108 oauthArea.style.display = document.body.clientHeight > 400 ? 'block' : 'none';
109 }, false);
110 //
111 var backButtonPress = 0;
112 $.back = function(event) {
113 backButtonPress++;
114 if (backButtonPress > 1) {
115 plus.runtime.quit();
116 } else {
117 plus.nativeUI.toast('再按一次退出应用');
118 }
119 setTimeout(function() {
120 backButtonPress = 0;
121 }, 1000);
122 return false;
123 };
124 });
125 }(mui, document));
mui

这就不懂了,为什么一个function函数要放在一个括号里面,括号里面还有一个括号(mui,document),看起来像是参数一样。还以为这是Native.js里面的内容,然后去官方文档中翻看了一下Njs的内容,并不是啊,然后去百度。

自执行函数

自执行函数(function(jquery){}(jquery));
* 相当于下面的代码:

var fun = function(jquery){};
fun(jquery);

* 立即执行匿名函数fun(jquery);主要是为了避免jquery与其他类库或变量有冲突。

百度中有好多jquery字样出现,但是并没有明确说跟jquery有关系,我也是不太清楚。

mui的demo中(function($, doc) {}(mui, document));据说可以让函数在文档加载完毕之后再执行,相当于

$(document).ready(function (){
//函数体
});

更多相关文章

  1. 如何使函数等到对象的值未定义为js setTimeout
  2. 放在和中的javascript语句,但是语句不在函数中,这些语句何在被执行
  3. 父范围中的变量不会在匿名函数中被更改[重复]
  4. 如何调用另一个函数内的函数?
  5. res.jwt不是函数 - NodeJS Express
  6. Javascript中的素数函数...多个语句
  7. touchableopacity onpress函数undefined(不是函数)React Native
  8. 运行一次后停止执行函数
  9. Javascript日期/时间函数是否依赖于客户端机器?

随机推荐

  1. 简单使用的ASP.NET验证码实例代码
  2. C#开发微信门户及应用(五)之用户分组信息
  3. 详细介绍ASP.NET Core静态文件的使用教程
  4. C#开发微信门户及应用(四)之关注用户列表
  5. 如何限制所有HTTP请求是POST方式?
  6. C#开发微信门户及应用(三)之文本消息和图
  7. C#开发微信门户及应用(二)之微信消息处理
  8. ASP.NET MVC重写的实例教程
  9. Asp.Net中Session失效是怎么解决的?
  10. MVC实现下拉框联动的实例详解