第二个问题经测试,分析结果如下var f = function(){
this.c = 123;
return this;
}
alert(new f().c);构造函数默认会返回一个对象,相当于return this; 如果显示指定return,那就会返回return 之后的东西var f = function(){
this.c = 123;
return window;
}
alert(new f().document);
那我们创建的新对象(f的实例哪去了?)
this.c = 123;
return this;
}
alert(new f().c);构造函数默认会返回一个对象,相当于return this; 如果显示指定return,那就会返回return 之后的东西var f = function(){
this.c = 123;
return window;
}
alert(new f().document);
那我们创建的新对象(f的实例哪去了?)
<script language=javascript>
function 天外水火()
{
alert("学习")
}
var 天外水火TEMP = 天外水火;
/*
function 天外水火(){
天外水火TEMP();
alert("再学习");
}
*/
天外水火 = function(){
天外水火TEMP();
alert("再学习");
}
天外水火()
</script>
这两种是不一样的呀,估计new f()返回的是function对象,并非马上执行,而是直接调用则执行了,可以看看下面的
<script language=javascript>
var f = function(){
this.c = 123;
return this;
}
alert(f().constructor)
alert(new f().constructor)
alert(f()===new f())
</script>
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")判断
<script language=javascript>
var f = function(){
alert("asdasd")
for( var i in this)
{
document.write(i+"<br>")
}
}
//alert(f())
alert(new f().constructor)
</script>
var xml = XMLHttpRequest();
xml得到的是 ActiveXObject实例
而
var xml = new XMLHttpRequest();
xml得到的是 XMLHttpRequest实例根据个人需要来获取不同的对象就是了个人愚见,不对之足请指正
可能这就是作者的用意
在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.
var xml = XMLHttpRequest();
xml得到的是 ActiveXObject实例
而
var xml = new XMLHttpRequest();
xml得到的是 XMLHttpRequest实例----------------------------
这种说法我感觉不对
var f = function(){
return window;
}
var f = function(){
return window;
}
alert(f()===new f()); => true可以看出 f() 和 new f()都是window对象,它们是相同的.
而
XMLHttpRequest = function(){
return new ActiveXObject("Microsoft.XMLHTTP");
};
alert(XMLHttpRequest() == new XMLHttpRequest()); => false
之所以不同是因为它们是不同的ActiveX实例,
<script language=javascript>
var a=new ActiveXObject("Microsoft.XMLHTTP");
var b=new ActiveXObject("Microsoft.XMLHTTP");
alert(a==b)
</script>
<script language=javascript>
var a=function(str)
{
this.c=str
}
var b=function(str)
{
return new a(str);
}
alert(new b("111").c)
alert(b("222").c)
alert(new b("333").constructor)
alert(b("444").constructor)
</script>
这样定义只是为了使用window.XMLHttpRequest来访问用XMLHttp对象?
就这么简单吗?
比如下面简写了一个唯一实例的例子
<script language=javascript>
var temp=null;
var a=function(str)
{
this.c=str
}
var b=function(str)
{
if(temp)
{
temp.c=str
}
else
{
temp=new a(str)
}
return temp;
}
var HB1=new b("111")
alert(HB1.c)
var HB2=new b("222")
alert(HB1.c)
alert(HB2.c)
</script>
xml = new XMLHttpRequest()就可以了,
windows的话就用 new ActiveXObject("Msxml2.XMLHTTP");
上面说过
XMLHttpRequest() 和 new XMLHttpRequest()的效果是一样的,
而firefox中后者才是正确的语法,
说明作者不是随意写的, 用意就在此. 真是高明.
function f(){
return 1;
}
alert(f()==new f()); //显示false,为什么改为return window;就显示true
</script>
1. if(typeof window.jQuery == "undefined") {
window.undefined = window.undefined;
如果是为了兼容是不是
window.undefined = window._________$$$$$$_______这样也行?
只要后面的返回undefined就可以?
window.undefined=window.任何一个没定义的东东就可以;//结果是一样的
function a()
{
this.Action = "functiontext";
return 1;
}
var b = a();
var c = new a();
//if(b==c)
{
alert(b.Action); //undefine
alert(c.Action); //functiontext
}
alert(b); //1
alert(c); //[object Object]
</script>呵呵,不错。。
{
XMLHttpRequest = function(){
return new ActiveXObject("Microsoft.XMLHTTP");
};
}var xml = XMLHttpRequest(); @1
var xml = new XMLHttpRequest(); @2@1 返回的可能是null,undefine,甚至是一个integer。
@2 能保证返回的一定是一个object; 在做 xml.someoper() 时
@1就有可能出错了。
@2只是IE自己alert(undefine); 更友好吧~
欢迎点击访问,诚恳接受大家的意见。如被采用,赠送无毒娃娃一个(价值30元)
www.sqhome.cn
$.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
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 偷梁换柱了。