当前位置: 移动技术网 > IT编程>开发语言>JavaScript > javascript面向对象习题答案

javascript面向对象习题答案

2019年03月23日  | 移动技术网IT编程  | 我要评论
第二章 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');



 

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网