手记

JQ中promise设计之精妙

假设我们有一个方法对象有两个属性方法如下;

function test(name){
   var name=name;
   var re={};
   re.getName=function(){return name;};
   re.setName=function(newName){name=newName;return this};
   return  re; 
}
alert(test("张三").setName("王五").getName());

如果这时我们需要权限设置,对外只开放getName方法,不开放setName方法,就可以借鉴JQ的promise实现

function test(name,flag){
      var name=name;
      var re={};
      var promise={
         getName:function(){return name;},
         promise:function(obj){
            return obj!=null?$.extend(obj,promise):promise;
          }
    };
    re.setName=function(newName){
       name=newName;
       return this;
    };
    promise.promise(re);
    return  flag?re:re.promise();
}

    console.log(test("wwb").getName());
//  console.log(test("wwb").setName("aaa").getName());  
    console.log(test("wwb",true).getName());
    console.log(test("wwb",true).setName("aaa").getName());

注释掉的会报错

0人推荐
随时随地看视频
慕课网APP

热门评论

<body>

<div>1</div>

<div>2</div>

<div>3</div>

<div>   <div>4</div><div>5</div>6<div></div>   </div>

</body>


$(function(){

   $("div:first-child").css({"color":"red"});

})


1和4 会变红 ,找到每个匹配到的div元素集中的第一个(div作为孩子) 我想你已经明白了吧 

查看全部评论