width="760" scrolling="no" height="90" frameborder="0" src="http://p.alimama.com/code.php?t=2&i=mm_10003521_106784_109301&w=760&h=90&sz=11&bgc=FFFACD&bdc=FFFFFF&tc=000080&lc=000000&dc=000000" name="alimamaifrm" id="alimamaifrm" border="0" marginwidth="0" marginheight="0">
發現一組非常好的js函數、原型和對象的題目,在原帖的下面有題目的分析,正在學習中,稍後一定補上我的分析和理解
http://www.javascript.com.cn/bbs/viewthread.php?tid=15030&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D2&page=1
函數
第一題
var i=5;
function fo()
{
var i=4;
var fi=new Function("alert(i);");
fi();
}
fo();
第二題
function f1()
{
i=20;
eval("var i");
}
alert(i);
function f1()
{
i=10;
var i;
}
alert(i);
第三題
function f1()
{
alert("1");
}
function f2()
{
alert("2");
}
var f3=f1.call;
f3.call(f2);
第四題
function fo()
{
var i=0;
return function(n)
{
return n+i++;
}
}
fo()(15);
alert(fo()(20));
第五題
function f1(n)
{
if(n==0)return;
else return f2(--n);
}
function f2(n)
{
alert(f1.caller);
return f1(n);
}
f1(2);
第六題
alert(typeof Function.prototype);
alert(Object.prototype instanceof Function);
alert(Function.prototype instanceof Function);
原型和對象
第一題
function cls1()
{
this.a=new Array;
}
function cls2()
{
}
cls2.prototype=new cls1;
var x=new cls2;
var y=new cls2;
x.a.push(1,2,3);
alert(y.a);
第二題
function cls1()
{
this.a=1;
}
function cls2()
{
}
var x=new cls2;
cls2.prototype=new cls1;
var y=new cls2;
alert(x.a);
alert(y.a);
第三題
function cls1()
{
this.a=1;
}
function cls2()
{
}
var x=new cls2;
cls2.prototype.a=1;
var y=new cls2;
alert(x.a);
alert(y.a);
第四題
function cls1()
{
this.a=1;
}
function cls2()
{
}
var x=new cls2;
cls2.prototype.a=1;
var y=new cls2;
alert(x.a);
alert(y.a);
第五題
String.prototype.self=function()
{
return this;
}
var s="s";
alert("s".self()=="s")
alert(s.self()==s)
alert("s"==="s")
alert("s".self()=="s".self())
alert(s.self()==s.self())