hasOwnProperty 递归 简单回调 链式调用

1、hasOwnProperty 函数的返回值为Boolean类型。如果对象object具有名称为propertyName的属性,则返回true,否则返回false。

function Box(){
    this.a="123";
}
var box1=new Box();
box1.hasOwnProperty("a");    //返回true

如果在原型上添加一个属性,则返回false

// 想要查看对象(包括原型链)是否具备指定的属性,可以使用in操作符

function Box(){
    this.a="123";
}
var box1=new Box();
Box.prototype.abc="345"

box1.hasOwnProperty("abc");    //返回false;
"abc" in box1   // 返回true

2、复习递归

function box(num){
    if(num<=1){
        return 1;
    }else{
        return num*box(num-1);
    }
}
box(3);

通过arguments.callee来调用函数本身

function box(num){
    if(num<=1){
        return 1;
    }else{
        return num*arguments.callee(num-1);
    }
}
box(3);

3、简单的回调函数

function $(id){
    return document.getElementById(id);
}
Object.prototype.show=function(fn){
    if(fn && fn.constructor==Function){   //判断,有fn和fn是一个函数
        fn();    //直接执行
    }else{
    this.style.display="none";}
}
$("c").onclick=function(){
    this.show(function(){alert()});
}
//把li节点隐藏,利用回调方法 
var appendDiv=function( callback){
  var li=document.getElementsByTagName('li');
  for(var i=0;i<li.length;i++){
    if(typeof callback==='function'){
      callback(li[i])
    }
  }
 }
 appendDiv(function(node){
  node.style.display='none';
 })

4、链式调用

function $(id){
        return new _$(id);
    }
    function _$(id){
        this.elements = document.getElementById(id);
    }
    _$.prototype = {
        constructor:_$,
        hide:function(){
            console.log('hide');
            return this;
        },
        show:function(){
            console.log('show');
            return this;
        },
        getName:function(callback){
            if(callback){
                callback.call(this,this.name);
            }
            return this;
        },
        setName:function(name){
            this.name = name;
            return this;
        }
    }
    $('c').setName('xesam').getName(function(name){
        console.log(name);
    }).show().hide().show().hide().show();
原文地址:https://www.cnblogs.com/change-oneself/p/5379533.html