Zero's blog


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

JS奇谋诡计——16 Hacks

发表于 2018-05-17 | 分类于 前端

前言

好久没写博客啦~这次写一篇轻松的内容,JS里的16个有趣的技巧,简单总结自Tal Bereznitskey 的两篇博客,代码摘自原文。

  • Javascript Hacks for Hipsters (2013)
  • 7 Hacks for ES6 Developers (2017)

Hacks!

前9个来源于2013年的博客,后7个来源于2017年底的博客。

条件运算符实现方法调用

1
2
3
4
5
6
7
8
9
// Boring
if (success) {
obj.start();
} else {
obj.stop();
}
// Hipster-fun
var method = (success ? ‘start’ : ‘stop’);
obj[method]();
阅读全文 »

NodeJS——CommonJS模块规范

发表于 2018-03-05 | 分类于 前端

前言

最近一直在写大论文,前端的知识看得有点少,抽空看一看,以免生疏。本篇主要介绍关于NodeJS中基于CommonJS规范的模块,文中大量内容摘取自阮一峰及廖雪峰两位大神的博客,整合加入了一些个人理解。

NodeJS中的模块

模块对外暴露变量:

1
module.exports = variable;

模块引用其他模块暴露的变量:

1
var ref = require('module_name');

CommonJS模块规范

基本内容

每个JS文件都是一个模块,内部各自使用的变量名和函数名互不冲突,包括全局变量。变量为当前模块的私有变量。

若想在多个文件分享变量,需定义为global对象的属性。

1
global.x = 'global';

一般不推荐全局写法。

CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外输出的接口。其他文件加载某个模块,其实是加载该模块的module.exports属性。

阅读全文 »

Centos7下安装FFmpeg、OpenCV3.3到Anaconda2的填坑记录

发表于 2017-12-22 | 分类于 Python

前言

为了安装支持视频处理的opencv折腾了好多天,记录一下最终成功的安装过程,虽然以后不大会再装了。
特别声明,如果只是想简单使用opencv处理图像,可以直接使用conda install opencv-python即可,不需要使用编译这种方法。

安装FFmpeg

阅读全文 »

JS设计模式——策略模式

发表于 2017-10-30 | 分类于 前端

前言

本系列为阅读曾探的《JavaScript设计模式与开发实践》一书所做的读书笔记,大部分内容摘自原书,加入了部分个人理解。本篇内容为书中第5章策略模式。

策略模式

策略模式:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。

可用于解决一些包含多种条件语句 if-else 的问题,同时提高代码的复用性。

策略模式的目的就是将算法的使用与算法的实现分离开来。一个基于策略模式的程序至少由两部分组成。第一个部分是一组策略类,策略类封装了具体的算法,并负责具体的计算过程。 第二个部分是环境类Context,Context 接受客户的请求,随后把请求委托给某一个策略类。要做到这点,说明Context 中要维持对某个策略对象的引用。

举例,年终奖金计算。

阅读全文 »

JS设计模式——单例模式

发表于 2017-10-24 | 分类于 前端

前言

本系列为阅读曾探的《JavaScript设计模式与开发实践》一书所做的读书笔记,大部分内容摘自原书,加入了部分个人理解。

单例模式

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

单例模式在 js 开发中的应用场景:登录弹窗(一个网站只应该有一个登录弹窗,多次点击也不会出现多个)。

Java语言下单例模式的实现(饿汉单例模式)

1
2
3
4
5
6
7
public class Singleton {
private static Singleton instance = new Singleton(){};
private Singleton(){};
public static Singleton getInstance() {
return instance;
}
}

JS 语言下单例模式的实现

模仿 java 语言的简单实现

1
2
3
4
5
6
7
8
9
10
11
12
13
function Singleton() {
this.name = 'singleton';
this.instance = null;
}
Singleton.getInstance = function() {
if(!this.instance) {
this.instance = new Singleton();
}
return this.instance;
}
var a = Singleton.getInstance();
var b = Singleton.getInstance();
a === b; //true
阅读全文 »

JavaScript笔记——闭包

发表于 2017-10-17 | 分类于 前端

前言

秋招大大小小若干场面试,几乎都问了这个问题,当然不知道闭包也不能说会js。所以,不要逃避,好好地来梳理一下。

闭包是什么?

来看看MDN官网上关于闭包的定义:

A closure is the combination of a function and the lexical environment within which that function was declared.

闭包是函数以及函数声明所在的词法环境的组合。这个定义有点干涩,个人认为可以结合闭包的实际场景简单地这么理解:函数调用结果返回一个子函数,同时该子函数使用了外部函数的局部变量,使得变量保存在内存中,形成了闭包。

阅读全文 »

JavaScript笔记——DOM操作

发表于 2017-10-14 | 分类于 前端

前言

本篇文章以介绍常见的DOM节点知识、DOM元素操作方法为目的,其中也对一些比较容易忽略的问题进行简要说明。才疏学浅,有说错的地方或优化的建议也欢迎留下评论。

Node节点

首先,简单看看Node节点。有三个属性个人认为比较需要注意,nodeType、nodeName、nodeValue。

  1. nodeType——节点类型
    返回的是一个整数,表面节点的类型。包括元素节点(1)、文本节点(3)、注释节点(8)等。详见Node.nodeType
    阅读全文 »

CSS哪些事儿——居中布局

发表于 2017-10-14 | 分类于 前端

前言

居中布局,是前端页面最常见的一种布局需求。刚开始学习前端时还是困扰了一段时间,后来看了Centering in CSS: A Complete Guide一文后才算掌握了方法。下面将现今自己了解的居中布局方法作个小总结。

概述

首先来看看居中布局的需求分类:

  • 水平居中
  • 垂直居中
  • 垂直水平居中
    阅读全文 »
Zero Zhang

Zero Zhang

8 日志
2 分类
6 标签
GitHub Segmentfault
© 2018 Zero Zhang
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.3