频道栏目
首页 > 资讯 > JavaScript > 正文

js如何执行函数

15-08-11        来源:[db:作者]  
收藏   我要投稿

前言

js如何执行函数,指的是声明一个函数之后,在代码里如何去执行它。

函数调用模式

步骤如下, 1、先声明一个函数; 2、然后,调用该函数即可。

方法调用模式

步骤如下, 1、先声明一个函数,只不过这个时候是作为对象的一个方法; 2、然后,调用对象的该方法即可。



总结

不管是哪种执行方式,根本都是先声明一个函数,然后再调用它即可——只不过声明函数的方式有所区别而已。


参考

JS执行函数

JS执行函数:
1:方法调用模式。
请注意this此时指向myobject。
/*方法调用模式*/
var myobject={
value:0,
inc:function(){
alert(this.value)
}
}
myobject.inc()

2:函数调用模式
请注意this此时指向window
/*函数调用模式*/

var add=function(a,b){
alert(this)//this被绑顶到window
return a+b;
}
var sum=add(3,4);
alert(sum)

3:构造器调用模式
javascript语言精粹一书建议摒弃这中方式。因为有更好的方式。这里先不介绍。下次发表博文的时候贴出来。
会在这里加一个连接。
/*构造器调用模式 摒弃*/

var quo=function(string){
this.status=string;
}
quo.prototype.get_status=function(){
return this.status;
}
var qq=new quo(aaa);
alert(qq.get_status());



例子

1、一个容易混淆的例子,函数的声明是在jquery $(function(){声明一个函数})里面进行的,开始还以为在jquery $(function(){})里面声明的函数就会立即执行,看来还是对《js如何执行函数》理解得有点模糊。 2、实际上,不管是在js代码里声明的函数,还是在jquery或其他js框架里声明的函数,执行函数的步骤都是 1)先声明; 2)后调用执行——没有调用函数它的代码就不会被执行。
<script type=text/javascript>
	function logOut() {
		window.parent.logout();
	}
	
	var EventHandler = function(scope, fun, args) {
		this.fun = fun;
		this.scope = scope;
		this.args = args ? args : [];
		return this.init();
	};
	
	EventHandler.prototype = {
		init : function() {
			var sc = this;
			return function() {
				sc.fun.call(sc.scope, sc.args);
			};
		}
	};
	
	$(function() {
		function initFirstLevelMenu(datas) {
			var ul = $('.nemu ul')[0];
			for ( var i = 0, l = datas.length; i < l; i++) {
				var data = datas[i];
				var li = document.createElement('li'), a = document
						.createElement('a'), img = document
						.createElement('img');
				var div = document.createElement('div');
				img.src = data.imagename;
				$(img).css(margin, 8px 0px 2px 0px);
				$(li).css(position, relative);
				$(li).css(left, 0px);
				$(li).css(top, 0px);
				$(li).click(new EventHandler(li, function(dd) {
					if (dd.func) {
						doLink2(dd.func);
					}
					//var thisparent = $(this).parent();
					$('.nemu ul li').removeClass('over');
					$(this).addClass('over');
					initSecondLevelMenu(dd.children);
				}, data));
				a.href = 'javascript:void(0);';
				a.appendChild(img);
				li.appendChild(a);
				/*$(li).mouseover(function(){
					//$(this).addClass('over');
				});
				$(li).mouseout(function(){
					//$('#top .title .nemu ul li').removeClass('over');
				});*/
				$(div).css(color, #FFFFFF);
				$(div).css(font-weight, bold);
				$(div).css(font-size, 12px);
				$(div).css(font-family, '宋体');
				$(div).css(align, center);
				div.innerHTML = data.dispname;

				li.appendChild(div);
				ul.appendChild(li);
			}
		}
		function initSecondLevelMenu(datas) {
			$('#secondmenu').html('');
			var div = $('#secondmenu')[0], ul = document.createElement('ul');
			var ulhtml = ;
			if (datas.length == 0) {
				var img = 
状态定义:正常 一般故障; img +=  重大故障; img +=  预警; img +=  异常; img +=  离线
; $('#div_menu_2').html(img); return; } for ( var i = 0, l = datas.length; i < l; i++) { var data = datas[i]; var li = document.createElement('li'), a = document .createElement('a'); if (i == 0) { ulhtml +=
  • ; } else { ulhtml +=
  • ; } ulhtml += data.dispname +
  • ; //ulhtml +=+data.dispname+; /*$(a).mouseover(new EventHandler(a,function(){ $('#div_menu_2 ul li span .over').removeClass('over'); $(this).addClass('over'); })); $(a).mouseout(new EventHandler(a,function(){ $(this).removeClass('over'); }));*/ } $('#secondmenu').html(''); $('#secondmenu').html(ulhtml); $(li).click(function(dd) { $(#secondmenu .over).addClass(normal); $(#secondmenu .over).removeClass(over); $(this).addClass(over); doLink2(this.id); }); } $ .ajax({ url : '${contextPath}/menuAction!initMenu.action', data : { s : Math.random() }, async : true, dataType : 'json', success : function(data) { if (data.success) { if (window.parent.getSystemtype() == 1) { initSecondLevelMenu(data.Data); // document.getElementById(hideinfo).style.display = none; var str = new StringBuffer(); /*str.append(
  • 地    图
  • ); str.append(
  • 实时告警台
  • ); str.append(
  • 统计展示台
  • ); */ str .append(
  • 地    图
  • ); str .append(
  • 实时告警台
  • ); str .append(
  • 统计展示台
  • ); $('#secondmenu').html(str.toString()); var str1 = new StringBuffer(); str1 .append('
  • 系统配置
  • '); $('#firstmenu').html(str1.toString()); $(li).click(function(dd) { $(#secondmenu .over).addClass(normal); $(#secondmenu .over).removeClass(over); $(this).addClass(over); doLink2(this.id); }); $(#secondmenu li).click(function(dd) { $(#firstmenu .over).removeClass(over); }); } else { initFirstLevelMenu(data.Data); } } else { alert(data.msg); } }, error : function(e, en) { if (en == 'parsererror') { alert('登陆超时,点击【确定】重新登陆'); window.top.location.reload(); } else { window.top.message(e); } } }); $(.organ).html(( + window.parent.getSystemOrgan() + )); $(.menuhidden).click(function() { if ($(this).hasClass('up')) { $(.nemu).animate({ left : '1281px' }, fast); //$(this).animate({left:'1256px'},slow); $(this).removeClass('up'); } else { if (window.parent.getSystemtype() == '1') { $(.nemu).animate({ left : '500px' }, slow); $(this).addClass('up'); return; } $(.nemu).animate({ left : '500px' }, slow); //$(this).animate({left:'476px'},slow); $(this).addClass('up'); } }); }); </script>

     
    相关TAG标签
    上一篇:如何对报表的参数控件赋值
    下一篇:Android 的事件传递机制,详细解释
    相关文章
    图文推荐

    关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

    版权所有: 红黑联盟--致力于做实用的IT技术学习网站