javascript
文章平均质量分 73
daisy_Hawen
身体和灵魂都需要奔跑 欢迎关注我的Githttps://github.com/daisyHawen
展开
-
js深入之继承
关于原型、闭包、继承肯定是面试必问的,而了解、掌握、深入理解,这几点又完全不一样。所以上一篇我写了关于如何创建一个对象:工厂模式、构造函数模式、原型模式以及组合模式,寄生模式等等;并且又重新理解了一遍prototype和[[prototype]](__proto__),这才算是真正的把这里理解清楚原创 2017-08-01 17:02:07 · 937 阅读 · 8 评论 -
RequireJS源码解读(二)
(续上节) 上面讲了如何处理全局序列和context化全局序列 以及执行全局序列中的依赖项。 检查依赖项 //Mark all the dependencies as needing to be loaded. context.nextTick(function() { //Some defines c原创 2017-03-24 17:02:04 · 560 阅读 · 1 评论 -
ReqiureJS实现原理(一)
RequireJS实现原理,包括如何处理define,如何生成context原创 2017-03-24 14:45:03 · 1132 阅读 · 0 评论 -
JS算法——数组去重
前天面试了腾讯,才注意到原来大厂对于算法的要求也是很高的。 出了四道算法题,还好我勉强作答出来了,不过还是很险,因为平时对于js的算法研究较少,于是这两天恶补算法。 我开了一个git用于积累平时遇到的算法实现。 https://github.com/daisyHawen/algorithm-JS原创 2017-03-15 09:56:10 · 504 阅读 · 0 评论 -
《javascript设计模式与开发实践》阅读笔记六(高阶函数AOP)
所谓AOP就是面向切面的编程,就是把一些与业务逻辑无关的功能模块抽离出啦,这个模块主要有:日志管理、安全控制、异常处理等等。 Java是通过反射和动态代理机制来实现AOP,Javascript可以通过函数”动态织入“来实现AOP,下面是一个例子: Function.prototype.before = function(beforefn) { var _self = this; r原创 2017-03-12 11:45:31 · 1033 阅读 · 0 评论 -
也来聊一聊深浅克隆以及JS实现
一般来说,在Java中,谈论深浅克隆比较多,在 Java 语言中,数据类型分为值类型(基本数据类型)和引用类型,值类型包括 int、double、byte、boolean、char 等简单数据类型,引用类型包括类、接口、数组等复杂类型。浅克隆和深克隆的主要区别在于是否支持引用类型的成员变量的复制。 然而在Javascript中,我们也将采用原型对象实现了OOP(面向对象编程),因此也就会遇到深浅克原创 2017-03-20 15:23:47 · 574 阅读 · 0 评论 -
NodeJS开发指南——mongoDB、Session
记录一下这两天用nodeJS搭建一个博客系统遇到的坑;关于mongoDB数据库的连接db.jsvar settings = require('../settings');var mongo = require('mongodb');var Server=mongo.Server;var Db=mongo.Db;var server = new Server('localhost', 27017原创 2017-01-23 12:22:58 · 2156 阅读 · 0 评论 -
区分clientX、offsetX、pageX、screenX
以前一直以为写了这几个属性的区分的,今天再来看居然没有写。 不过这个还是很有用的。这里再来总结一下。所有解释都在图里面。这里再来文字解释一下,图中至标注了Y的值,X同理。clientX clientYevent.clientX event.clientYclient直译就是客户端,客户端的窗口就是指游览器的显示页面内容的窗口大小(不包含工具栏、导航栏等等)。event.clientX、event原创 2017-02-22 11:30:26 · 966 阅读 · 1 评论 -
jQuery的deferred对象详解
jquery 的deferred 对象开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。 通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。 但是,在回调函数方面,jQuery的功能非常弱。为了改变这一点,转载 2017-02-22 09:27:07 · 534 阅读 · 0 评论 -
面试经
我觉得对于学习的知识应该有相对深刻的理解 不是只是扫过一遍高程 一问就是这个看过但是忘记了 不能只会js css也是必要的 另外要对dom操作 以及ajax有了解 基础算法能够实现 有求知欲和自我驱动学习能力了解es6 css3 有加分 了解前端构建有加分 熟悉react vue angular 有加分 技术博客有自己的总结有加分 github有干货有加分 有项目经验有加分 了解自动化测试有加分我说原创 2017-02-22 09:26:18 · 488 阅读 · 0 评论 -
Express: Can’t set headers after they are sent.
“Can’t set headers after they are sent.” => “不能发送headers因为已经发送过一次了” => 在处理HTTP请求时,服务器会先输出响应头,然后再输出主体内容,而一旦输出过一次响应头(比如执行过 res.writeHead() 或 res.write() 或 res.end()),你再尝试通过 res.setHeader() 或 res.writeHea原创 2017-01-23 15:29:34 · 842 阅读 · 0 评论 -
ES6学习手册(一)——初识ES6
ES6是什么ECAMScrpit定义了: 语言语法——语法解析规则、关键词、语句、声明、运算符;类型——布尔型、数字、字符串、对象等;原型和继承内建函数和函数的标准库——JSON、Math、数组方法、对象自省方法等2.ES5——2009年发布 这一版本引进了Object.create()、Object.defineProperty()、getters和setters、严格模式以及JS原创 2017-02-18 16:14:04 · 918 阅读 · 0 评论 -
express的应用
记得很久以前看了一本书,书名叫做《express开发Node》之类的,忘了具体是什么名字了,这里说这个的原因,就是说用express开发Node 的web确实很快捷,而且它和django基于python还不一样,django框架很大。而express的就比较轻量一点。 express可以让我们很轻易的开发基于MVC模式的网站应用: 所谓MVC (Model-View-Controller,模型原创 2017-01-17 16:02:14 · 1051 阅读 · 0 评论 -
JavaScript学习笔记:数组求和方法
今天刷了一下leetcode,感觉到了自己的弱。。。数组方法JavaScript中数组有很多种方法,下图能更好的向你阐述JavaScript有多少种方法,作用是啥: 数组方法简单点回顾一下前面学习的知识:push():向数组末尾添加一个或多个元素 unshift(): 向数组的开头添加一个或多个元素 pop(): 删除数组最后一个元素 shift(): 删除数组第一个元素 sort():转载 2017-02-16 16:51:52 · 7474 阅读 · 0 评论 -
bootstrap源码阅读(一)——modal原理
虽然bootstrap主要是css,但是我还是从bootstrap的js入手进行学习 #检查jquery,以及jquery版本/*typeof检查是否存在jquery对象*/if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery')}/*检查jquery版本原创 2016-12-12 22:04:31 · 6394 阅读 · 0 评论 -
jsonp跨域的安全问题
JSONP没有关于错误调用的处理,一旦回调函数失败,浏览器就会以静默失败的方式处理。只支持GET请求安全性问题1、Callback可自定义导致的安全问题Content-type与XSS漏洞 再输出 JSON 时,没有严格定义好 Content-Type( Content-Type: application/json )然后加上 callback 这个输出点没有进行过滤直接导致了一个典型的 X转载 2017-04-24 09:40:12 · 8943 阅读 · 1 评论 -
呕心沥血深入学正则和字符串
前言: 如果面试官问你exec与match的区别是什么,你应该怎么回答? 这个是我前几天看到牛客网的一个面经,觉得很有意思的一个问题。正则是我们经常会使用的一个东西,我们可以用一行代码实现很多事情,从最简单的邮箱验证、手机号的验证,到进阶级别的字符串查找,字符串的替换等; 关于正则你真的懂了吗?正则类型在创建正则对象的时候有两种创建方式,字面量方式//方式一var原创 2017-09-02 11:41:04 · 808 阅读 · 1 评论 -
浅谈setTimeout,setInterval
概念setTimeoutsetTimeout的用法var timer1=scope.setTimeout(function,[delay,params]);var timer2=scope.setTimeout(code,[delay,params]);function function 是你想要在delay毫秒之后执行的函数。code 第二种语法,是指你想要在delay毫秒之后执行的代码原创 2017-08-28 10:37:11 · 807 阅读 · 0 评论 -
js深入之创建对象
工厂模式创建function createPerson(name, age, job) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function() { console.log(thi原创 2017-07-31 09:42:17 · 417 阅读 · 0 评论 -
MongoDB学习笔记之Mongoose的使用
**MongoDB的介绍** 本文介绍了在nodejs环境下,简单的通过mongoose操作mongoDB的方法原创 2016-01-22 10:23:57 · 20245 阅读 · 11 评论 -
理解jQuery中的Promise
首先回顾一下jQuery的deferred对象: jQuery的deferred对象关于Promise的进化史在jQuery1.4中,还没有promise这个概念,写一个ajax,就得写回调函数,就像这样:$.get('/myData', { success: onSuccess, failure: onFailure, always: onAlways})到了jQuer原创 2017-06-27 14:27:29 · 5182 阅读 · 0 评论 -
异步的脚本加载
这里关系到浏览器性能的问题。 众所周知,如果吧script写在head中,那么文档需要等到head加载完毕才会显示出来。<!DOCTYPE html><html lang="en"><head> <title></title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,原创 2017-07-11 09:22:19 · 313 阅读 · 0 评论 -
《javascript语言精粹》读书笔记——函数
这几天发现了一本好书,又薄又精辟,《JavaScript语言精粹》 看了对象、函数这两节,发现书如其名,确实是精粹。函数的调用函数调用的方式有四种: - 方法调用模式 - 函数调用模式 - 构造器调用模式 - apply调用模式方法调用模式这个方法是经常会见到的一种模式,方法作为对象的一种属性,通过obj.functionName()这种调用方式调用,如:var myObject = {原创 2017-06-05 10:48:28 · 551 阅读 · 0 评论 -
用vue-cli 与vuex一步一步搭建一个笔记应用(三)
前面我们仅仅只是搭建了一个简单的界面,并没有使用vuex来进行数据管理。 下面我们开始怎么使用vuex,因为我也是初学,所以一边学一边写吧。 vuex有中文文档:其实讲得很清除 https://vuex.vuejs.org/zh-cn第一步 安装vuexcnpm install vuex -g --save-dev 为什么要使用vuex?在vuex文档里写得很清楚,一个vue就是这样的,有dat原创 2017-05-10 16:50:27 · 5889 阅读 · 0 评论 -
用vue-cli 与vuex一步一步搭建一个笔记应用(二)
上一篇,我们已经借助vue-cli把环境搭建好了,这一篇就开始介绍如何写笔记应用的界面了。我们借鉴的博文划分得很清楚因此在components中建立三个组件。toolbar.vue,noteList.vue ,Editor.vue再提一句vue-cli采用的es6语法。 因此它的模块化语句就是:export default { name: 'hello', data () { re原创 2017-05-09 15:13:21 · 4660 阅读 · 0 评论 -
深入学习前端MVC和MVVM(二)
上一节说了后台的MVC,现在开始讲重点,前端的MVC又是一个什么鬼。 很长一段时间我都没有搞清楚MVC和MVVM。 一直在说ng是MVC,react和Vue是MVVM,MVVM我用过了,用过vue和react,他们的数据绑定,那么MVC究竟是什么样子呢?一个简单MVC的实现有一篇很好的文章讲了MVC: http://www.imooc.com/article/4911重点: MVC的基础是观原创 2017-05-09 08:44:06 · 1431 阅读 · 0 评论 -
js性能优化之惰性加载函数
一个普通的浏览器嗅探技术,每次都要调用addEvent进行判断,执行if语句。// 浏览器嗅探技术:指的就是检测浏览器是否支持var addEvent = function(elem, type, handler) { if (window.addEventListener) { return elem.addEventListener(type, handler, fal原创 2017-04-26 11:33:22 · 2317 阅读 · 1 评论 -
js性能优化之分时函数
分时函数和函数节流的问题不一样,函数节流针对的事件不是用户主动调用的,前面已经提过了。 函数节流的原理是:延迟当前函数的执行,如果该次延迟还没有完成,那么忽略接下来该函数的请求。也就是说会忽略掉很多函数请求。分时函数处理的问题是用户主动调用的,比如插入千百个节点var arr = [];for (var i = 1; i <= 1000; i++) { arr.push(i) //假设a原创 2017-04-25 16:05:35 · 2680 阅读 · 0 评论 -
js性能优化之函数节流
最近在看一些书的时候,以及面试题的时候看到一个新词“函数节流” 函数节流的场景出现在,Js中很多函数的触发并不是用户直接控制的,在这些情况下,函数可能会被非常频繁的调用,而造成大的性能问题。函数被频繁调用的场景window.onresize事件。mouseover事件上传进度 函数节流的原理比如我们在window.onresize事件中要打印当前浏览器窗口的大小,在我们通过拖拽来改变窗口原创 2017-04-25 11:42:34 · 3055 阅读 · 0 评论 -
Node.js核心模块
最近感冒了,晕乎乎了,好像完不成一个星期看完一本书的任务,这本薄薄的《NodeJS开发指南》已经看得超时了。现在看到核心模块,希望尽快看完吧,在这周之前。 今天想折腾微信小程序,但是发现需要企业组织机构号,一脸萌逼。。。算了,暂时就不学了。 然后莫名其妙申请了一个阿里云DNS服务,什么鬼,还花了好几块钱。 碎碎念,好久没有在图书馆学习了。现在开始写这篇文章吧,估计会很草率,原谅现在头晕乎乎的我原创 2017-01-09 20:58:56 · 1664 阅读 · 0 评论 -
Node.js-模块和包
这篇文章是Node.js第二篇,之所以要来写这些,是因为想把看过的书都记录下来,第一篇文章在这里: 从头开始讲Node.js——异步与事件驱动 看的书名叫做《Node.js开发指南》 从元旦之后就给自己立了一个flag,每个星期看完以本书,最近比较闲,主要是花在这部书上的精力也还蛮多的吧,现在已经翻了1/4了,嗯,一个星期已经过去一半了,不知道能不能看完呀。闲话少说,来说重点吧。这一篇主要是原创 2017-01-09 11:24:59 · 466 阅读 · 0 评论 -
jQuery深入之源码解析(一)
总体架构 可以看出来jQuery主要有三个模块: 入口模块、功能模块、底层支持模块。 - 入口模块 在构造jQuery对象模块中,如果在调用构造函数创建jQuery对象时,会调用选择器sizzle遍历文档,查找匹配的Dom,并创建一个包含这些Dom元素的jquery对象。 -底层模块 工具方法utilities 用于简化对jquery对象、Dom元素、数组、对象、字符串等的操作原创 2016-06-03 15:15:08 · 996 阅读 · 0 评论 -
jQuery深入之源码解析(二)——自调用匿名函数
jQuery自调用匿名函数,即jQuery的所有代码都被包裹在一个立即执行的匿名函数表达式中,这种结构叫做“自调用匿名函数”。当浏览器加载完jQuery文件后,自调用匿名函数就会开始执行,**初始化**jQuery的各个模块。自调用匿名函数的三种写法方法一 jQuery1.7.7采用的这种写法(function(){//...})()方法二(function(){//....}())方法三原创 2016-06-03 16:00:05 · 3824 阅读 · 0 评论 -
javascript设计模式——单例模式
单例模式单例模式是指在您要确保始终只创建一个对象实例时使用的设计模式。 在面向对象的经典编程语言中,创建单例模式背后的概念多少有点让人难以理解,因为其中包含一个同时具有静态及非静态属性和方法的类。 但本文主要讨论 JavaScript,因此,由于 JavaScript 是一种不包含真正类的动态语言,因此 JavaScript 版本的单例模式极其简单。为什么需要采用单例模式?在我开始介绍实施细节之前,转载 2016-05-03 11:22:36 · 492 阅读 · 0 评论 -
electron折腾记(二)——关于窗口
这里讲一些关于electron中窗口的设置,主要是对原API的解读创建一个新的窗口const BrowserWindow = require('electron').remote.BrowserWindowconst path = require('path')const newWindowBtn = document.getElementById('new-window')newWindowBt原创 2016-05-15 20:11:02 · 30091 阅读 · 6 评论 -
javascript设计模式——工厂模式
简单工厂模式简单工厂模式会把创建工作交给外部去做。 使用一个工厂,您可以将该代码消减为一个函数调用。 从一个只包含单个函数的对象字面量开始。 在 JavaScript 中,一个对象字面量/单例就是一个简单工厂的构建方式。 在经典的面向对象编程语言中,这将是一个静态类。比如下面创建一个汽车工厂,它包含的方法有创建汽车makeCar, 它接受的一个参数是一个字符串数组,该数组映射到不同的装饰者类。va原创 2016-05-03 11:18:40 · 510 阅读 · 0 评论 -
Express+ejs搭建小小网站
发现jade实在是不好看,最后转入ejs的行当。 现在是边学边做。一、EJS的安装首先需要node环境,然后就是下面的两行代码:npm install expressnpm install ejs二、EJS的语法var user=[{name:"Hawne"},{gender:"female"},{age:"21"}]<% if (user) { %> <h2><%= user.name原创 2016-02-26 15:00:03 · 957 阅读 · 0 评论 -
HTTP权威指南学习笔记
一直以为学习前端只需要掌握js语法、html语法、css就够了,确实没有想到还需要很多知识点,今天来细细学习HTTP。一个HTTP请求由4部分组成:HTTP请求方法或动作正在请求的URL一个可选的请求头集合,其中可能包含身份验证信息一个可选的请求主体服务器返回的HTTP相应包含3部分:-一个数字和文字组成的状态码,用来显示请求的成功和失败 -一个响应头集合 -响应主体Web服务器最常原创 2016-02-25 10:13:40 · 504 阅读 · 0 评论 -
jQuery之ajax
方法 描述$.ajax() 执行异步 AJAX 请求$.ajaxPrefilter() 在每个请求发送之前且被Ajax处理之前,处理自定义 Ajax 选项或修改已存在选项$.ajaxSetup() 为将来的 AJAX 请求设置默认值$.ajaxTransport() 创建处理 Ajax 数据实际传送的对象$.get() 使用 AJAX 的 HTTP GET 请求从服务器加载数据$.原创 2016-02-22 10:43:14 · 453 阅读 · 0 评论 -
前后端交互之MVC模式初探
作为一个前端的初学者,一直想弄明白的就是前后端究竟是如何交互的呢,对于AJAX也有了一定的了解。明白了Express可以写后台,于是就想理解经典的MVC模式究竟是什么。 所谓MVC:C(控制器 Controller)- 负责转发请求,对请求进行处理。V(视图 View) - 界面设计人员进行图形界面设计。 M(模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据原创 2016-02-19 11:31:40 · 945 阅读 · 0 评论