zoukankan      html  css  js  c++  java
  • 十五的学习日记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())
    见代码如下

    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观摩一下的心情,尝试的结果明天再说.
  • 相关阅读:
    无废话XML阅读笔记(三)
    ____ To All Girls & Boys
    FDT注册码
    无废话XML阅读笔记(五)
    无废话XML阅读笔记(一)
    物理运动学公式汇总
    flash编译器错误查询表
    入秋了,给大家一些生活小常识
    12年
    linux 自动上传程序
  • 原文地址:https://www.cnblogs.com/always-naive/p/5933821.html
Copyright © 2011-2022 走看看