十五的學習日記20160926-你不知道的JS筆記/

十五的學習日記20160926

JavaScript

  1. 一個用於檢測正負值的函數,能夠用它辨別-0值.
    我以爲挺好用,之後能夠寫到本身的工具庫裏.
//函數:檢查傳入參數是否爲正數.Number=>Boolean
function isPositive(num){
    if(typeof num !="number"||!Math.isNaN(num)){return false}//類型檢查!
    return 1/num===1/Math.abs(num)//若是一個數和他自己的絕對值相等那麼就是正的,不然就是負的,此處負零爲負,正零爲正.
}
  1. 工廠模式\混合模式的原理和應用
    原理:
  • 工廠模式: 設置加工函數,按照傳入參數選擇類來生成實例,返回包裝結果.
  • 混合模式: 相似工廠模式,但不選擇類來生成實例,而是把類做爲要生成對象的子類.
    ...算了,仍是不寫什麼原理了,看着頭大,本身寫代碼太少,讀不懂.
  1. 工廠模式用例和解釋:撲克牌類的寫法:
    需求分析:
    卡牌自己:2種顏色,4種花色,每種花色13階,外加大小王.
    類方法:能夠按多種規則進行排序,
    能夠洗牌,抽牌,檢查牌庫狀態(空\滿)
    檢查和提示重複.
    按這寫法想了一夜,發現碼量太大了.今晚不可能寫完
(function () {
    /*
    * 基本思路:
    * 經過basicSet生成圖片套牌,包含花色顏色階位
    * 未完成
    * */

    var basicSet={//基礎設置只爲初始化牌面而用.
        pattern:{heart:"♥",diamond:"♦",spade:"♠",club:"♣"},
        color:{red:"red",black:"black"},

        joker:{needed:true,jokrank:14},
        rank:["A","2","3","4","5","6","7","8","9","10","J","Q","K"],
        cardBox:[],
        code_generate://生成惟一密碼.無需執行,每次執行都至關於重置內部arr數組.
            function () {
                var arr=[];
                return function () {
                    for(;;){
                    var key=Math.random().toString(16).substring(2);
                    if(arr.indexOf(key)==-1){
                        break;
                        }else{
                        key=Math.random().toString(16).substring(2);
                    }
                    }
                    arr.push(key);
                    return key;
                }
            }

    };
    //一張卡的構造函數
    var SingleCard=function (face=false,color="black",pattern="♥A",rank=0,Id,owner="host",joker=null) {
        //下面這些屬性除了正反面能夠修改,其他在創造後都不能夠修改,因此這段代碼會重寫成帶有被寫保護模式的
        if(joker){
            this.isfrontface=face?face:false;
            this.color=color?color:"black";
            this.pattern=null;
            this.rank=basicSet.joker.jokrank;
        }
        else {
            this.isfrontface=face?face:false;
            this.color=color?color:"black";
            this.pattern=pattern?pattern:"♥1";
            this.rank=rank
        }
        this.Id=Id?Id:Math.random().toString(16).substring(2);
        this.owner=owner
    };
    SingleCard.prototype.go={
        turnRound:function () {
            this.isfrontface=this.isfrontface?false:true;
        }
    };
    //一組卡的構造函數
    var cardSet=function (owner="host",cards) {
        this.owner=owner;
        this.cards=[];
        if(Object.prototype.toString.call(cards)==="[object Array]"){
            this.cards.concat(cards);
        }
    };
    cardSet.prototype.go={
      shuffle:function () {

      },
      get function(){
          
      }
    };

    //初始化卡片區
    var initCardZone =function (){

    };
    //初始化入口
    var init=function () {

    };
    //初始化使用者
    var user=function (name,direction,role="player") {
        
    };


    //模塊出口
    return (function () {
        //接入口
        window.myGames={

        }
    })();

    

})();

4.new操做符的邏輯, new雖然被認爲次一級,點號訪問和括號調用最高級,但存在以下兩種狀況
new func()()轉化爲new (func())()
new func.func()轉化爲new (func.func())
見代碼以下javascript

function Foo() { getName = function () { alert (1); }; return this; } 
Foo.getName = function () { alert (2);}; 
Foo.prototype.getName = function () { alert (3);};
var getName = function () { alert (4);};
function getName() { alert (5);} 
//請寫出如下輸出結果: 
Foo.getName(); 
getName(); 
Foo().getName(); 
getName(); 
new Foo.getName(); 
new Foo().getName(); 
new new Foo().getName();

做者: 你不知道的前端
連接:http://www.imooc.com/article/9925
來源:慕課網前端

工具&思想

  1. 今天看到羣裏一張emacs的截圖,發現emacs沒有想象中的醜陋, 而後去網上了解了emacs的一些細節,好比他的無所不能,能夠寫文章,能夠任務管理也能夠編寫項目計劃, 這激起了我想去下一個emacs觀摩一下的心情,嘗試的結果明天再說.
相關文章
相關標籤/搜索