十五的学习日记20160926-你不知道的JS笔记/
十五的学习日记20160926
JavaScript
- 一个用于检测正负值的函数,可以用它辨别
-0
值.
我觉得挺好用,以后可以写到自己的工具库里.
//函数:检查传入参数是否为正数.Number=>Boolean
function isPositive(num){if(typeof num !="number"||!Math.isNaN(num)){return false}//类型检查!return 1/num===1/Math.abs(num)//如果一个数和他本身的绝对值相等那么就是正的,否则就是负的,此处负零为负,正零为正.
}
- 工厂模式\混合模式的原理和应用
原理:
- 工厂模式: 设置加工函数,按照传入参数选择类来生成实例,返回包装结果.
- 混合模式: 类似工厂模式,但不选择类来生成实例,而是把类作为要生成对象的子类.
...算了,还是不写什么原理了,看着头大,自己写代码太少,读不懂.
- 工厂模式用例和解释:扑克牌类的写法:
需求分析:
卡牌本身: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
来源:慕课网
工具&思想
- 今天看到群里一张emacs的截图,发现emacs没有想象中的丑陋, 然后去网上了解了emacs的一些细节,比如他的无所不能,可以写文章,可以任务管理也可以编写项目计划, 这激起了我想去下一个emacs观摩一下的心情,尝试的结果明天再说.
转载于:https://www.cnblogs.com/always-naive/p/5933821.html
十五的学习日记20160926-你不知道的JS笔记/相关推荐
- 十五的学习日记20160925
十五的学习日记20160925 CSS 学过盒子布局的人都知道,元素之间的上下margin会合并,保留数值较大的margin作为渲染依据. 但是今天在群里讨论发现: img元素和p元素的上下margi ...
- 第十五周学习周记——微信小程序开发初步
第十五周学习周记 前言 一.小程序简介 二.小程序代码构成 1. JSON配置 2. WXML模板 3. WXSS样式 4. JS逻辑交互 总结 前言 这一周将开始微信小程序的学习. 一.小程序简介 ...
- 第十五周学习周报(20180611-20180617)
第十五周学习周报 一.本周学习情况 1.本周主要学习李宏毅老师的机器学习课程 Backpropagation Convolutional Neural Network Semi-supervised ...
- 201771010137 赵栋《面向对象程序设计(java)》第十五周学习总结
实验十五 GUI编程练习与应用程序部署 实验时间 2018-12-6 一:理论部分. 1.Java 程序的打包:编译完成后,程序员将.class 文件压缩打包为 .jar 文件后,GUI 界面序就可 ...
- 2017面向对象程序设计(Java)第十五周学习总结
上周,老师要求同学们自学应用程序部署,并布置了相关的实验任务.此次实验的目的是掌握Java应用程序的打包操作:了解应用程序存储配置信息的两种方法: 了解Applet小应用程序的开发及应用方法:掌握基于 ...
- 【软件开发底层知识修炼】十五 快速学习GDB调试二 使用GDB进行断点调试
上一篇文章我们学习了使用GDB的最基本方法:[软件开发底层知识修炼]十四 快速学习GDB调试一 入门使用 本篇文章将学习GDB的断点调试.断点调试是一种非常重要的调试方法. 文章目录 1 断点类型 2 ...
- 软件工程--第十五周学习进度
第十五周 代码量 245 所花时间 6h 博客量 3篇 了解到的知识点 搭建基本web,了解了服务器的配置过程,也开始为自己的项目投入基金. 转载于:https://www.cnblogs ...
- 推荐系统遇上深度学习(十五)--强化学习在京东推荐中的探索
强化学习在各个公司的推荐系统中已经有过探索,包括阿里.京东等.之前在美团做过的一个引导语推荐项目,背后也是基于强化学习算法.本文,我们先来看一下强化学习是如何在京东推荐中进行探索的. 本文来自于pap ...
- 十五、IO流【黑马JavaSE笔记】(本文文中记录了个人学习感受)
文章目录 IO流 (一)File 1.File类的概述和构造方法 2.File类的创建功能 3.File类判断和获取功能 4.File类的删除功能 5.递归 6.案例(递归求阶乘) 7.案例(遍历目录 ...
最新文章
- 跨平台工具、组件和框架的汇总
- ASP.NET State Service
- 2018年工业机器人销量排位_长安-2018年11月汽车销量 细分销量
- 计算机会考补考时间安排,2019-2020学年第二学期初补考考试安排(实时更新)
- 网络协议:TCP拥塞控制
- 金山云服务器内网带宽,性能提升40%!第三代金山云服务器全面覆盖不同企业计算力需求...
- 杭电--1009 C语言实现
- ai能不能同时切割多个对象_今天才发现,AI有这9个隐藏技能...
- html编码的aacll,高级音频编码(AAC)的一种信息隐藏方法.pdf
- 数据库系统基础教程(1)数据库系统世界
- 微信支付H5完整版代码
- Vehicle veh1 = new Vehicle(); 如何理解这个语句
- html5 扩展 cs6,Dreamweaver CS6提高了HTML5工具的效率
- 如何使用计算机对文件修改密码,文件夹怎么设置密码?怎么给文件夹设置密码?...
- 【Mesh】关于Mesh中Seq+IV与RPL分析
- pyhton BOF图像检索
- 交换机vtp功能配置
- html中表格实现在页面居中显示,html中怎么把表格居中
- github监控平台hawkeye搭建
- 苍溪师范94级计算机与文秘专业就业前景,2019文秘专业就业前景和就业方向分析...
热门文章
- 深入理解Java 虚拟机
- oracle dba收入水平,oracle教程_oracle dba 收入
- boost1.7 centos7编译
- Makefile模板的改进
- 三人表决器_数电小实验之三人表决器
- linux在python的虚拟环境下运行程序_在win10和linux上分别安装Python虚拟环境的方法步骤...
- 【算法】剑指 Offer 05. 替换空格
- 【算法】剑指 Offer 12. 矩阵中的路径
- 【Kafka】kafka-eagle几个指标含义
- Spark 2.1.0集成CarbonData 1.1.0