发现一组非常好的js函数、原型和对象的题目
发现一组非常好的js函数、原型和对象的题目,在原帖的下面有题目的分析,正在学习中
函数
第一题
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())