<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="理解new functionName()定义一个函数的意义" id="card1">
<p> 游客</p><p>
标题:理解new functionName()定义一个函数的意义<br/>
正文:<br/>
比如定义一个函数的两种调用方法： <br/>代码如下:<br/>function getInfo() { <br/>var info = { <br/>message: &quot;message&quot; <br/>}; <br/>return info; <br/>} <br/><br/>1、var info1 = getInfo(); <br/><br/>2、var info2 = new getInfo(); <br/><br/>1和2有什么区别吗？info1和info2得到的值是一样的吗？ <br/><br/>第1种很简单，用的也很多，就是执行一个函数，并接受函数的返回值并赋给info1对象； <br/><br/>第2种情况一般就很少见了。首先，函数也是一种对象，是对象肯定就可以实例化（实例化其实就是调用对象的构造函数对对象进行初始化），所有第2种情况就是调用getInfo函数对象的构造函数，并接收构造函数初始化的实例（一般都是this），而函数有个比较特别的地方就是，如果构造函数有显示返回值，将用该返回值替换this对象返回。所以第2中情况new getInfo就是调用构造函数（函数的构造函数就是其定义本身）并接收返回值info。 <br/><br/>应用： <br/><br/>1、比如HTML定义了DOM对象：&amp;lt;div id=&quot;domId&quot;&amp;gt;&amp;lt;/div&amp;gt;，js代码如下： <br/>代码如下:<br/>function $(domId) { <br/>var dom = document.getElementById(domId); <br/>return dom; <br/>} <br/><br/>window.onload = function() { <br/>var dom1 = new $(&quot;domId&quot;); <br/>var dom2 = $(&quot;domId&quot;); <br/>alert(dom1 == dom2); <br/>} <br/><br/>则alert提示信息将显示true。之所以使用$做函数名，是因为 使用这个函数的时候是不是有点像jQuery的风格呢？其实jQuery的构造函数里就应用了这种风格的函数定义，不管你是用new还是直接调用函数，返回的值都是一样的。 <br/><br/>2、定义兼容的XMLHttpRequest对<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1111&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1111&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1111&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1111&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1111">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1111">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>