javascript面向对象习题答案
程序员文章站
2023-04-07 22:04:42
第二章 1.如果我们在控制台中执行下列语句,结果分别是什么?为什么? 2.执行下面的语句后,v 的值会是什么? var v = v || 10; 如果将v 分别设置为100、0、null,结果又将是什么? 100, 10, 10 3.编写一个打印乘法口诀表的脚本程序。提示:使用嵌套循环来实现。 第三 ......
第二章
1.如果我们在控制台中执行下列语句,结果分别是什么?为什么?
var a; typeof a; undefined > var s = '1s'; s++; nan > !!"false"; true > !!undefined; false > typeof -infinity; number > 10 % "0"; nan > undefined == null; true > false === ""; false > typeof "2e+2"; string > a = 3e+3; a++; 3000
2.执行下面的语句后,v 的值会是什么?
var v = v || 10; 如果将v 分别设置为100、0、null,结果又将是什么?
100, 10, 10
3.编写一个打印乘法口诀表的脚本程序。提示:使用嵌套循环来实现。
for (let i = 1; i < 10; i++) { for (let j = i; j < 10; j++) { console.log(i + '*' + j + '= '+ i*j); } }
第三章
1.编写一个将十六进制值转换为颜色的函数,以蓝色为例,#0000ff 应被表示成 rgb(0,0,255)的形式。然后将函数命名为getrgb(),并用以下代码进行测试。提示: 可以将字符串视为数组,这个数组的元素为字符。
function getrgb(color) { let color1 = color.replace(/#/g, ''); console.log(color1) let a = parseint(color1.substring(0, 2), 16); let b = parseint(color1.substring(2, 4), 16); let c = parseint(color1.substring(4), 16); return 'rgb(' + a + ',' + b + ',' + c + ')'; }
第四章答案
4. 在string()构造函数不存在的情况下自定义一个mystring()的构造器函数。记住,由于string()不存在,因此您在写构造器函数时不能使用任何属于内建string对象的方法和属性。并且要让您所创建的对象通过以下测试:
var s = new mystring("hello"); s.length; //5 s[0]; //"h" s.tostring(); //"hello" s.valueof(); //"hello" s.charat(1); //"e" s.charat("2"); //"l" s.charat("e"); //"h" s.concat(" world!"); //"hello world!" s.slice(1,3); //"el" s.slice(0,-1); //"hell" s.split("e"); //["h","llo"] s.split("l"); //["he","","o"]
answer
function mystring(pstr){ this.str=pstr.tostring(); this.length=this.str.length; for(var i=0;i<this.length;i++){ this[i]=this.str[i]; } this.tostring=function (){ return this.str; }; this.valueof=function (){ return this.tostring(); }; this.charat=function(index){ index=parseint(index,10); index=isnan(index)?0:index; return this[index]; }; this.concat=function(concatstr){ return this.str+concatstr; }; this.slice=function(startindex,endindex){ while(startindex<0){ startindex=startindex+this.length; } while(endindex<0){ endindex=endindex+this.length; } if(endindex<=startindex){ return ""; } var resultstr=""; for(var i=startindex;i<endindex;i++){ resultstr+=this[i]; } return resultstr; }; this.split=function(s){ var resultarr=[]; var tempstr=""; for(var i=0;i<this.length;i++){ if(this[i]===s){ resultarr.push(tempstr); tempstr=""; }else{ tempstr+=this[i]; } } resultarr.push(tempstr); return resultarr; }; this.reverse=function(){ var temparr=[]; var i; for(i=0;i<this.length;i++){ temparr[i]=this[i]; } temparr.reverse(); this.str=temparr.join(""); for(i=0;i<this.length;i++){ this[i]=temparr[i]; } }; }
6.在array()构造器以及相关的数组文本标识法都不存在的情况下,自定义一个类似的myarray()构造器,并令其通过以下测试:
var a = new myarray(1,2,3,"test"); a.tostring(); //"1,2,3,test" a.length; //4 a[a.length-1]; //"test" a.push("boo"); //5 a.tostring(); //"1,2,3,test,boo" a.pop(); //boo a.tostring(); //"1,2,3,test" a.join(","); //"1,2,3,test" a.join(" isn\'t"); //1 isn't 2 isn't 3 isn't test"
answer
function myarray(){ this.length=arguments.length; for(var i=0;i<this.length;i++){ this[i]=arguments[i]; } this.tostring=function(){ var resultstr=""; for(var i=0;i<this.length;i++){ if(i===this.length-1){ resultstr+=this[i].tostring(); }else{ resultstr+=this[i].tostring()+","; } } return resultstr; }; this.push=function(obj){ this[this.length]=obj; this.length++; return this.length; }; this.pop=function(){ if(this.length===0){ return null; } result=this[this.length-1]; this[this.length-1]=undefined; this.length--; return result; }; this.join=function(str){ var resultstr=""; for(var i=0;i<this.length;i++){ if(i===this.length-1){ resultstr+=this[i].tostring(); }else{ resultstr+=this[i].tostring()+str; } } return resultstr; } }
第七章
1
var win = window.open('http://www.baidu.com', 'packt', 'width=200,height=200,resizable=yes'); settimeout(() => win.resizeto(400, 400), 1000);
2
2.1
function walkdom(n, callback) { do { callback(n); if(n.haschildnodes()) { walkdom(n.lastchild, callback); } } while (n = n.previoussibling); } function callback(n) { console.log(n) } walkdom(document.documentelement, callback);
2.2
function include(src) { var script = document.createelement('script'); script.src = src; document.head.appendchild(script); } include('somescript.js');
3
let myevent = { addlistener(element, event_name, callback) { if (element.length > 1) { for (let item of element) { addevent(item, event_name, callback); } } else { addevent(element, event_name, callback); } function addevent(element, name, callback) { if (element.addeventlistener) { element.addeventlistener(event_name, callback, false); } else if (element.attachevent) { element.attachevent(event_name, callback, false); } else { element.event_name = callback; } } }, removelistener(element, event_name, callback) { if (element.removeeventlistener) { element.removeeventlistener(event_name, callback, false); } else if (element.detachevent) { element.detachevent(event_name, callback, false); } }, getevent(event) { event = event || window.event; return event; }, gettarget(event) { const target = event.target || event.srcelement; return target; }, stoppropagation(event) { event.stoppropagation() || (event.cancelbubble = true); }, preventdefault(event) { event.preventdefault() || (event.returnvalue = false); } } function mycallback(e) { e = myevent.getevent(e); alert(myevent.gettarget(e).href); myevent.stoppropagation(e); myevent.preventdefault(e); } myevent.addlistener(document.links, 'click', mycallback);
4
let ajax = { request(url, method, callbak, params) { var xhr = new xmlhttprequest(); xhr.onreadystatechange = (function (myxhr) { return function() { if (myxhr.readystate === 4 && myxhr.status === 200) { callbak(myxhr); } } })(xhr); xhr.open(method, url, true); xhr.send(params || ''); } } function mycallback(xhr) { alert(xhr.responsetext); } ajax.request('somefile.txt', 'get', mycallback); ajax.request('script.php', 'post', mycallback, 'first=john&last=smith');
上一篇: python脚本实现统计日志文件中的ip访问次数代码分享
下一篇: 小刘老家是农村