jquery代码的几个疑问

ice_berg16 2007-03-30 09:47:15
1. if(typeof window.jQuery == "undefined") {
window.undefined = window.undefined;

这句是起什么作用?

2. if ( !window.XMLHttpRequest )
XMLHttpRequest = function(){
return new ActiveXObject("Microsoft.XMLHTTP");
};
var xml = new XMLHttpRequest();
XMLHttpRequest这里应该是一个函数
var xml = XMLHttpRequest()就可以, new 一下也能得到结果.
两者有什么区别?

...全文
1711 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
wen8u8 2007-07-06
  • 打赏
  • 举报
回复
哈哈。收藏了。
longlangaa 2007-04-04
  • 打赏
  • 举报
回复
都是星星
mmcgzs 2007-04-04
  • 打赏
  • 举报
回复
window.undefined = window.undefined;

写的真tmd巧妙
ttyp 2007-04-03
  • 打赏
  • 举报
回复
XMLHttpRequest根本不是函数,而是一个对象,new 就是新建实例了
ttyp 2007-04-03
  • 打赏
  • 举报
回复
window.undefined = window.undefined;

定义undefined变量了,只有在5.0以后IE才支持这个变量,写的很巧妙。其实连判断都可以省了。



var undefined;

不赋值也等效
zhngling 2007-04-02
  • 打赏
  • 举报
回复
我的代码解决这个问题

function convertToDecimal(){
$.ajax({
type: "GET",
url: "/ch03-CharacterDecoder/response",
data: "key=" + $("#key").val(),
dataType: "html",
success: function(xml){
//alert( "keypress code: " + $("key",xml).text() );
/*
var decimal = document.getElementById('decimal');
decimal.value = $("key",xml).text();
//等价于上面的代码。
$("#decimal").val($("key",xml).text());
*/
$("#decimal").val($("key",xml).text());

$("#rating").html("按键代码:" + $("key",xml).text());
}
})
clear();
}

function clear(){
var key = document.getElementById("key");

key.value="";
// alert( "keypress code: " + $(this).html() );
}
全部源代码在下面的链接
http://blog.csdn.net/zhngling/archive/2007/03/20/1535125.aspx


silentwins 2007-04-02
  • 打赏
  • 举报
回复
太长,作个小记号~~~
meizz 2007-04-02
  • 打赏
  • 举报
回复
一个 function 在作为类来使用时,它里面的 return 值会作为 new 的句柄:
function a(){this.name="class a";}
function b(){this.name="class b"; this.id="bbb"; return new a();}

var c = new b();
alert(c.name)
alert(c.id)

通过这个例子可以看到, new b() 的结果跟 b 这个 class 一点关系都没有,已经被 return 偷梁换柱了。
codeisbeauty 2007-04-01
  • 打赏
  • 举报
回复
第二个问题是浏览器的兼容问题

原因是基于IE和基于Mozilla内核的浏览器对于XMLHttpRequest对象的实现方法不同,这么做自然是为了兼容不同的浏览器~~~
billyang1983 2007-03-31
  • 打赏
  • 举报
回复
省钱屋,隆重开张。提供深圳地区最新的购物、娱乐以及饮食打折信息。
欢迎点击访问,诚恳接受大家的意见。如被采用,赠送无毒娃娃一个(价值30元)
www.sqhome.cn
hbhbhbhbhb1021 2007-03-30
  • 打赏
  • 举报
回复
查了一下资料,关于第一个window.undefined问题,果然最主要的原因和LEO兄弟的差不多,把资料提出贴出来了,估计现在用的机会不象以前那么多了(因为IE5已经很少了),英文原文在下面,翻译过来差不多就是说
在IE5里不可以a="undefined"而需要用typeof a == 'undefined'来判断,而使用了这个,就可以把typeof那句取掉,而使用一次比较操作,不需要额外的操作


compare if a variable is equal to undefined using the typeof unary operator, because if you, someday, dicide to get these things work on IE 5, you can not compare to the undefined constant (?), after all, it doesn't exist on IE 5.0. Compare like this one:
if(b || typeof b == 'undefined') { ...

No need to go to the extra work. jquery.js begins with this:

window.undefined = window.undefined;

So "undefined" exists in every browser. This is a handy line of code to put
in any JavaScript - it's completely compatible with both old and new
browsers.




hbhbhbhbhb1021 2007-03-30
  • 打赏
  • 举报
回复
呵呵,看来还是要相信第一感觉
hansonboy 2007-03-30
  • 打赏
  • 举报
回复
真的看不出这样有什么好处, 或者作者是为了凸出oop的应用
leohuang 2007-03-30
  • 打赏
  • 举报
回复
把XMLHttpRequest声明为一个类可以扩展其他属性或方法
可能这就是作者的用意
hbhbhbhbhb1021 2007-03-30
  • 打赏
  • 举报
回复
但是这里的代码中看不出他这样写的好处,或许是这次多想了,连作者也没想这个,只是随手写了一个
leohuang 2007-03-30
  • 打赏
  • 举报
回复
第二个问题很显然
var xml = XMLHttpRequest();
xml得到的是 ActiveXObject实例

var xml = new XMLHttpRequest();
xml得到的是 XMLHttpRequest实例

根据个人需要来获取不同的对象就是了

个人愚见,不对之足请指正
hbhbhbhbhb1021 2007-03-30
  • 打赏
  • 举报
回复
整理了下思路,我这边现在的进展只是知道这两种是有区别的
<script language=javascript>
var f = function(){
alert("asdasd")
for( var i in this)
{
document.write(i+"<br>")
}
}
//alert(f())
alert(new f().constructor)
</script>
leohuang 2007-03-30
  • 打赏
  • 举报
回复
1. if(typeof window.jQuery == "undefined") {
window.undefined = window.undefined;

这句是起什么作用?
------------------------------------------
window.undefined=window.undefined;
是为window声明一个undefined的属性

当访问windows.undefined的时候window对象找不到以"undefined"命名的属性或者全局变量
系统会返回一个 undefined数据类型的值,这个访问是安全的,你可以试一下
alert(window.a)会显示undefined,
这样也就间接的给window对象声明了一个名为undefined的属性
以后就可以使用window.undefined这个属性了

有的浏览器没有undefined这个属性,但是都对于一个没有声明的对象,typeof这个对象返回的都是字符串"undefined"

这样做的目的只是为了给window对象增加undefined这个属性,以后可以直接使用
if(a==undefined)判断,而不用再if(typeof a =="undefined")判断
hbhbhbhbhb1021 2007-03-30
  • 打赏
  • 举报
回复
靠,我的思路又错了
fredyj 2007-03-30
  • 打赏
  • 举报
回复
mark 认真学习
加载更多回复(25)

87,915

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧