代码如下:var f1 = function(p1,p2,p3){ switch(arguments.length){ case 0: alert("无参版本的f1") break; case 1: alert("1个参数版本的f1:" + p1) break; case 2: alert("2个参数版本的f1:" + p1 + "," + p2) break; case 3: alert("3个参数版本的f1:" + p1 + "," + p2 + "," + p3) ...
Javascript中创建对象的语法是在new运算符的后面跟着一个函数的调用。如 代码如下:var obj = new Object(); var date = new Date(); 运算符new首先创建一个新的没有任何属性的对象,然后调用该函数,把新的对象作为this关键字的值传递。 代码如下:var date = new Date()的伪代码的实现就是 var obj = {}; var date = Date.call(obj); 构造函数的作用就是初始化一个新创建的对象,并在使用对象前设置对象的属性。如果定义自己的...
如今的JavaScript再也不是以前被当做玩具的在网页上运行的花哨的脚本了。JavaScript已经逐渐标准化,作为一门真正的编程语言广泛地应用在Web开发上。因此,越来越多的人开始重新认识这门脚本语言,并在不断地探索关于JavaScript核心思想和实现原理,过程中遇到了一些非常混淆的问题。本文着重解释一个比较常见但是非常容易使开发人员或者是初学JavaScript的人非常混淆的问题,那就是两个核心构造函数Object和Function,他们之间到底...
(1)声明一个表达式变量,并定义该变量的表达式。如: 代码如下:var func = function() { /*body code*/ } (2) 定义一个function表达式,并指定该表达式的标识。如: 代码如下:function func() { //body code } (3) 使用JavaScript内置Function对象构造。如: 代码如下:var func = new Function("/*parameters*/","/*body code*/"); 声明变量定义与使用function表达式标识定义是有区别的。我们知道,function在发生传递时采...
Function instanceof Object 和 Object instanceof Function 都是 true 1。我们可以认为 Object 是一个特殊的“类”,而这里的“类”即:Function 于是便可以理解为: Object = Function () {} 或 Object = new Function(); 即:Object 是 Function 的一个实例,所以,Object 原型链中便包含 Function.prototype,得出: Function.prototype.isPrototypeOf(Object) 为 true 2。同时,js中,所有对象(不包括js语言外部对象)都可视...
但javascript中并没有类概念,所谓的类也是模拟而来,通过函数加闭包模拟出类成员及私有成员(关于闭包可以参见跨越边界: 闭包)。这里我们将用比较平实的方式来了解一下javascript中的”类”,避开一些生硬的原理。 既然是用function来模拟类,所以编写代码创建类的关键字还是function。我们创建一个座标点类。function Point() { this.X = 0; this.Y = 0; }; var zeroPoint = new Point(); alert("当前...
好程序不是写给computer的,而是写给human的。遇到复杂功能,应该想着把它简化、组件化,把小功能封装成小组件,小功能块可以任意的组合得到千变万化的复杂功能。function就可以帮助我们把功能进行封装。那什么是封装呢。要我说,只要把具体实现给打包,对外提供调用接口那就是封装,方法也好、类也好就做了这些事。 javascript中的function可以用来创建方法、也可以用来创建类,实际上我们可以认为是用function来模拟出的类...
这个对象就是对function的一些扩充,最重要的当属bind方法,prototype的帮助文档上特意说了一句话:Prototype takes issue with only one aspect of functions: binding.其中wrap方法也很重要,在类继承机制里面就是利用wrap方法来调用父类的同名方法。argumentNames bind bindAsEventListener curry defer delay methodize wrap 代码如下://通过Object对象的extend方法对Function的prototype进行扩展 Object.extend(Function.pro...
代码如下:// 下面是OOP用的方法 // 这样很猥琐……因为JS并不是OOP语言…… // 但伟大的伍迷指引我们来这么干 // Belldandy会保佑用这些方法来OOP的人的…… Function.prototype.inherits = function(base){ //派生关系,保留了prototype //只支持单派生 this.prototype = new base(); return this; } Function.prototype.create = function(){ //类的创建器,和用new等价 //JS不支持在构造器用call和apply,所以…… //Belldandy啊...
函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解。 javascript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。在继续讲述之前,先看一下函数的使用语法: 以下是引用片段: function func1(…){…} var func2=function(…){…}; var func3=function func4(…){…}; var func5=new ...
这个立刻的结果是: 浏览器会在文档内容处于稳定状态后立刻执行,这样就达到了和<script defer='defer'>或者<body onload="fun()">一样的效果。 更应该看到的是,此函数更优于上述方法,前面两个函数只能静态时刻处理(文档第一次载入的时候),而在系统开发中,常常由于查询、更新等操作后,文档的内容会刷新,这样就可以利用setTimeout的特点,使代码能在页面内容稳定后再执行!
ul{border:1px solid red; width:300px} li{height:40px; margin:5px; background-color:#CCCCCC} 无标题文档 1111111111 22222222222 3333333333333 44444444444 55555555555 window.onload = function(){ var li_o = document.getElementsByTagName("li"); for(var i=0;i [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
//mhHover('起始ID名称','第 X 个TD标签','样式名称') 程序代码 function mhHover(tbl,idx,cls){ var t,d; if(document.getElementById)t=document.getElementById(tbl); else t=document.all(tbl); if(t==null)return; if(t.getElementsByTagName)d=t.getElementsByTagName("TD"); else d=t.all.tags("TD"); if(d==null)return; if(d.length<=idx) return; d[idx].className=cls; } //下拉菜单,显示隐藏ID //使用方法 //onChange...
情景一:var yx01 = new function() {return "圆心"}; alert(yx01); 我们运行情景一代码,将返回显示“[object object] ”,此时该代码等价于: function 匿名类(){ return "圆心"; } var yx01 = new 匿名类(); alert(yx01);我们对情景一的代码进行下面改造: var yx01 = new function() {return new String("圆心")}; alert(yx01); 我们运行,将会发现返回的是“圆心”,这是为什么呢? 只要 new 表达式之后的 constructor 返...
function test(){ return 123; } 显然这是一个函数声明,那下面的呢 var b=function(){return 123}; 这个大家就怀疑了,好似不是声明,因为函数没有名字,只是一个匿名函数,好,再看 var b=function test(){return 123}; 这个到底是不是函数声明呢,好象是,那我回答你"不是" alert(test); var b=function test(){return 123}; 可以在非ie上面任何一个js实现去测试,会报告test未定义错误,那如果这样呢 var b=function test(){return 123};...