首页 > 其他 > 详细

请实现鼠标点击页面中中任意标签和实现链式调用,每日刷两题

时间:2020-11-18 14:49:18      阅读:32      评论:0      收藏:0      [点我收藏+]
   请实现鼠标点击页面中中任意标签,alert该标签名称(注意兼容性)
   
  document.onclick = function (e) {
      let a = e || window.event;  //处理兼容,获取时间对象
      let o = a[‘target‘] || a[‘srcElement‘];//处理兼容,获取信息
      console.log(o.tagName)
    }
    //优雅实现
    function EleName(evt){
      evt=evt||window.event;
      let slttag=evt.target||evt.srcElement;
      let elename=slttag&&slttag.tagName?slttag.tagName.toLowerCase():‘no tagName‘;
      console.log(elename);
    }

    window.onload=function(){
      let el =document.querySelector(‘body‘);
      el.onclick=EleName;
    }

  

//实现一个链式调用:链式调用的核心就在于调用完的方法将返回自身实例返回
 // 示例一
    function class1(){
      console.log(初始化)
    }
    class1.prototype.menthod=function(asg){
      console.log(asg)
      return this;
    }
    let cl=new class1();
    cl.menthod(第一次调用).menthod(第二次调用);
   // 示例二
    let obj={
      a:function(){
        console.log(a)
        return this;
      },
      b:function(){
        console.log(b);
        return this;
      }
    }
    obj.a().b();
    // 示例三
    class MyMath{
      constructor(value){
        this.hasInit=true;
        this.value=value;
        if(!value){
          this.value=0;
          this.hasInit=false;
        }
      }
      add(){
        let args=[...arguments];
        let initValue=this.hasInit?this.value:args.shift();
        const value=args.reduce((prev,curv)=>prev+curv,initValue);
        return new MyMath(value)
      }
      minus(){
        let args=[...arguments];
        let initValue=this.hasInit?this.value:args.shift();
        const value=args.reduce((prev,curv)=>prev-curv,initValue);
        return new MyMath(value)
      }
    }
    let test=new MyMath();
    let res=test.add(12,32,21).minus(12).add(123);
    console.log(res.value)

    //原型链是实现链式调用
    Number.prototype.add=function(){
      let _that=this;
      _that=[...arguments].reduce((prev,curv)=>prev+curv,_that);
      return _that;
    }
    Number.prototype.minus=function(){
      let _that=this;
      _that=[...arguments].reduce((prev,curv)=>prev-curv,_that);
      return _that;
    }

    let num=0;
    console.log(num.add(1,2,3,4).minus(1,2,2))

 

请实现鼠标点击页面中中任意标签和实现链式调用,每日刷两题

原文:https://www.cnblogs.com/James-net/p/13999196.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!