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