JavaScript
文章平均质量分 59
descire
欢迎公众号@漫谈大前端,更多前端干货等你哦!
展开
-
JQuery与原生JS的那点事--选择器
JQuery与原生JS的那点事–选择器为什么jquery这么火 1、在浏览器群雄割据的年代,各种不兼容。(Jquery2.0以上版本不支持ie6、7、8) 2、轻量级。你要想想前端的代码多是要通过网络请求下来,虽然有缓存,但是代码越少越节约网络请求的时间。 3、各种方便的api。 4、健壮的插件库。 JQuery的地位,就连比较牛的Angular框架多要内置一个j原创 2016-10-21 18:36:03 · 1627 阅读 · 1 评论 -
JS干货--命名空间与链式编程
命名空间(namespace) 相信会Java的同学,对于命名空间并不会陌生。 我们来看看JavaScript中如何实现命名空间: 简单的的实现: var MYAPP = {};//显然这样不是很优雅(^_^) 换成这样: if(typeof MYAPP === "undefined") { var MYAPP = {}; } or: var MYAPP = M原创 2016-11-03 18:40:42 · 1183 阅读 · 0 评论 -
JavaScript进阶--拉勾网鼠标移入移出效果
JavaScript进阶1024丝毫不减少我敲写代码的激情,因为我闻到了代码的味道。先上效果图(gif自己录制的,有点难看抱歉,工具licecap)其实也是个偶然的机会,让我想去研究一下这个效果。主要是由于有个群里的人发了个讲解这个效果的链接,当时也没怎么在意,然后过两天,突然就想起这件事,便去拉勾网一看,哎呦效果不错,就想去找找那个链接看一下。没想到找了半天没找到了,没办法只能自己研究了。(自己独原创 2016-10-24 19:22:05 · 466 阅读 · 0 评论 -
JS版设计模式--Singleton
Design Patterns – Singleton写在前面 "Build Better Applications With Coding and Design Patterns"感受一下JavaScript的设计模式吧。什么叫SingletonSingleton(单例),何为单例?一个类有且仅有一个实例。JS中如何去实现单例 我们多知道JS中是没有类这个概念,所以你要是过分的纠结单例的定义翻译 2016-10-26 20:52:35 · 247 阅读 · 0 评论 -
JS干货--拷贝与继承
浅拷贝与深拷贝 ------------- 浅拷贝 ------------- var obj = { name: 'name' } var a = obj; a.name = 'new name'; console.log(a.name); // 'new name' console.log(obj.name); // 'new name' 这里就是原创 2016-11-07 19:45:26 · 570 阅读 · 0 评论 -
JS版设计模式--Factory
工厂模式(Factory) 工厂模式一般分为3种:简单工厂、工厂方法和抽象工厂。 很少能用到抽象工厂,除非是大型项目(我也没有用过,这里就不讨论了^_^) 概念大家可以百度一下,今天我要给大家介绍的是工厂方法模式实现 这里我们通过一个生产汽车的车间为例: //车间 function CarMaker(){}; //车的基本功能 CarMaker.prototype.confi原创 2016-11-08 20:23:15 · 351 阅读 · 0 评论 -
JSer的leetcode征途--TwoSum
leetcode如果你有一天发现你对前端没有兴趣了,你写两道leetcode上的题目,你就会乖乖回来继续码前端了。 俗话说的好,不想当将军的士兵不是好士兵,如果你想成为厉害的前端,算法技能是必备的。(算法不应该是程序员的标配吗-_-!)。题目难度Easy(楼主算法比较的差,先从简单的开始^_^) /* Given nums = [2, 7, 11, 15], target = 9,原创 2016-10-27 21:13:53 · 234 阅读 · 0 评论 -
每天一道前端面试题--throttle与debounce
今天我要和大家分享一下函数节流与函数去抖案例—拖拽小球这里我通过mousemove来移动canvas小球的案例来介绍函数节流与函数去 /* --------------------------- 转化坐标:这个方法很重要 --------------------------- @param point 鼠标的坐标 @return canvas画布上的坐原创 2016-10-19 10:06:30 · 549 阅读 · 0 评论 -
JavaScript基础--《JavaScript秘密花园读书笔记》
some thoughts of JavaScript Garden点击这里传送到JavaScript-Garden。 本文主要是我在阅读中的一些思考的总结。JavaScript所有的变量都可以当做对象使用,例外:null和undefined。首先我们要注意Number在使用点语法的时候,注意小数点造成的错误,安全的写法: 1..toString(); 1 .toString()原创 2016-10-19 10:01:19 · 1224 阅读 · 0 评论 -
JavaScript基础--new关键字
JavaScript中的new其实本事new关键字并不应该是JavaScript中的特色,主要是因为Java太火了,想抱一下它的大腿。JavaScript中的new的重要缺陷首先我们看下面一段代码: js //全局变量 var name = "global people"; function People(name) { this.name = name;原创 2016-10-19 10:02:23 · 419 阅读 · 0 评论 -
JavaScript基础--原型链
JavaScript中的原型链写在前面:这边文章主要是弄清JavaScript原型链中的一些概念,(虽然我是个小白-_-!)。可能会有一些错误,还望大家批评指正。示例代码 function People(options) { this.name = options.name; this.age = options.age; this.sex =原创 2016-10-19 10:07:22 · 277 阅读 · 0 评论 -
前端工程自动化--gulp的使用
Gulp在这之前,我希望你有一定的NodeJS基础。没有也没关系,知道npm怎么用就行。准备工作 1、你的电脑安装了node,(这个步骤我就省了。。) 2、创建一个项目文件夹,通过 npm init 创建package.json文件 3、npm install --save-dev gulp (安装gulp) 4、创建gulpfile.js文件。(重点)接下来我们要完成什么需求原创 2016-10-28 20:08:23 · 1318 阅读 · 0 评论 -
JS版设计模式--Iterator
迭代模式(Iterator) var Iterator = function () { var data = [1,2,3,4,5], index = 0, length = data.length; return { hasNext: function () { return index < length;原创 2016-11-09 21:03:56 · 346 阅读 · 0 评论 -
JS版设计模式--Decorator
装饰者模式(Decorator) 优点: 1、扩展功能,相对于继承增加了更多的灵活性。 2、通过使用不得装饰器,以及它们的排列组合,创造出更多的可能性。第一种实现方式 ---------------------- 构造器静态属性 + 继承 ---------------------- function Coder() { this.skills = ['r原创 2016-11-10 18:40:35 · 303 阅读 · 0 评论 -
再不用ES6就Out了--Object中新增的几个方法
Object.is(a, b) 讲到这个方法之前,首先要再谈到一下==和===的区别 (如果你还在代码中写== -_-!) ==: 在比较的时候会自动转换类型,才去比较。 ===: 唯一的缺点就是NaN不等于自身,+0和-0相等。 而ES6增加了Object.is(a, b)这个方法: console.log(+0 === -0); //true console.log(NaN原创 2016-11-28 18:54:44 · 4378 阅读 · 0 评论 -
JS干货--几个容易忽视的知识点
JS中的全局变量 ---------------- 隐式声明全局变量 ---------------- 在JavaScript中全局变量会变成全局对象(浏览器中为window)的属性 一下两种方式会隐式的成为全局变量: 1、no var function add(a, b) { //result变成全局变量 result = a + b; ret原创 2016-11-01 19:17:44 · 385 阅读 · 0 评论 -
JS干货--对象字面量
Why? 一把在JS中声明对象,大家多会这么写var a = {}; 很少有人这么写:var a = new Object(); 这是为什么呢? 1、首先{}这叫做对象字面量,new Object()则是使用构造器函数。 2、明显的对象字面量的声明方式比构造器函数更加方便。 3、new关键字缺失造成的问题。 所以在JS中建议以对象字面量的声明方式优先。下面我们先说说构造器函数原创 2016-11-01 19:18:10 · 1440 阅读 · 0 评论 -
再不用ES6就Out了--函数的新特性
函数默认值默认值这要是针对参数传入为undefined的值。ES6之前的写法: function add(x, y) { x = x || 1; y = y || 1; return x + y; } console.log(add()); // 2进入ES6的你:function add(x = 1, y = x) { return x + y;}cons原创 2016-11-29 18:43:04 · 291 阅读 · 0 评论 -
自学Node--RESTful初识
RESTful API对于不同客户端,只提供一套服务的接口, REST是最好的选择。分清几个概念 REST: Resource Representational State Transfer Resource: 资源 Representational: 表现形式JSON、XML、JPEG。 State Transfer: 状态变换 通过HTTP动词实现(GET、POST、P原创 2016-11-17 19:05:04 · 241 阅读 · 0 评论 -
JS干货--Function
函数的声明方式 ------------------ 1、采用new关键字 ------------------ var add = new Function('a, b','return a + b;'); 好像没人会这么写,各种不爽。 ----------------- 2、函数声明 ----------------- function add(a, b)原创 2016-11-02 19:58:27 · 325 阅读 · 0 评论 -
JavaScript进阶--图片懒加载
懒加载技术图片对于网络加载的负担相比较其他资源是非常大的,而且整个网页的图片并不是所有的多是第一时间呈现给用户。懒加载就是其中一种解决方案(本质上是延迟加载)。懒加载原理设置img标签的src属性为一张占位图。设置img标签自定义属性data-src为真是图片的url。页面加载完成后,根据你设定的时机替换img标签的src。 效果图: 获取页面所有的img。 var imgNode =原创 2016-11-30 20:33:35 · 271 阅读 · 0 评论 -
自学Node--回调地狱
最近比较郁闷,和朋友聊着聊着就聊到了掉头发的事件(-_-!),程序员还是要好好保护自己啊,下面进入正题:从文件读写的例子讲起 刚学习Node的同学,多会敲一个读取文件的代码: fs.readFile(path.join(__dirname,'/db.json'), 'utf-8', function (err, data) { if (err) { console.log('原创 2016-11-18 19:34:20 · 477 阅读 · 0 评论 -
JS版设计模式
策略模式(Stragegy)策略模式:定义一系列的算法,并且把它们封装起来,而且他们可以相互替换。实现方法这里我举个在项目中遇到的问题,比如说要验证一个对象中的属性的值是否合法,一开始我是通过不停的else if,现在想想,真的有点蠢了。 var validator = { //验证的方法 methods: {}, //配置数据 config: {}, //原创 2016-11-15 18:57:44 · 209 阅读 · 0 评论 -
再不用ES6就Out了--Promise解决回调地狱
Promise的介绍特点: * 它有三种状态:Pending(进行中)Resolved(已完成)Rejected(失败) * 一旦建立,就无法取消。这是它的缺点。基本写法: let flag = true; let p = new Promise((resolve, reject) => { if (flag) { resolve('success');原创 2016-12-02 20:36:24 · 3150 阅读 · 1 评论 -
JS版设计模式--Facade
外观模式(Facade)外观模式主要是定义一个高层接口,使复杂的子系统更加容易使用。例子 比如我们在浏览器中限制a标签的默认行为。 这时候我们就得考虑IE浏览器与标准浏览器的兼容问题。 (虽然这是个简单的例子,但是能够说明问题) var link = document.getElementById('link'); link.onclick = function (原创 2016-11-22 19:33:00 · 253 阅读 · 0 评论 -
JS基础--事件(1)
事件首先明确IE中是冒泡型事件处理,而标准浏览器中使用的是捕获冒泡型事件处理。HTML标签属性 <button type="button" name="button" onclick="alert('1');">确定</button> 属性为on+事件名称,属性值为JavaScript字符串。 这种方式虽然没有什么兼容性的问题, 但是不满足结构与行为分离的思想。 而且当你事件处理比较原创 2016-11-23 19:42:32 · 282 阅读 · 0 评论 -
再不用ES6就Out了--es6变量声明
ES6的变量声明方式保留了var和function。新增加了let、const、class和import。 而且,let、const、class声明的全局变量再也不会和全局对象的属性挂钩了。let ------------ let ------------ 1、let只在所在的代码块中有效 for (var i = 0; i < 10; i++) {} console原创 2016-11-24 20:10:57 · 3828 阅读 · 0 评论 -
再不用ES6就Out了--ES6解决两个典型问题
数组去重在ES5中,主要通过Object的hash特性,减少一次for循环 let arr = [1,2,3,3,3,2,12,3,4,5,5,4]; let removeDuplicate = arr => { let obj = {}, result = []; arr.map((value,index) => { if (!obj[value])原创 2016-12-07 19:30:31 · 1740 阅读 · 0 评论 -
原生JS--解读Node(节点)
写在前面本来开开心心的看着ityped.js的源码,才看到几十行就发现怎么有两个方法没见过。然后翻看了一下MDN,发现自己的知识库要更新了。通过翻阅MDN和Stack Overflow,总结一些原生DOM操作的知识点,大致分为三个部分:Node解读、Element上的操作、DOM中的位置计算。Node的分类Node中有很多类,但是有几个你必须记住: | 类型 | node原创 2017-01-18 18:30:29 · 5122 阅读 · 1 评论 -
原生JS--解读Element
写在前面本篇文章主要介绍: * 如何查找元素节点 * 元素节点中的属性节点的操作 * JS操作样式的常用操作以下例子用到的HTML <div class="demo some play" id="demo"> <div class="one item"> <p>hello</p> </div> <div class="two item"></d原创 2017-01-19 16:19:12 · 1854 阅读 · 0 评论 -
CSS并不简单--一道微信面试题的实践
本系列会持续分享本人学习到的CSS知识点、技巧和效果展示。如有错误,希望您能指出。前段时间有一位大牛分享的几道微信的面试题,其中一道是求一个元素的background-color的题目,鉴于对这道题目的学习,我写下了这边文章。优先级的计算规则!important 这个关键字的优先级最高。要优化考虑使用样式规则的优先级来解决问题而不是 !important.下面要引入特殊值 0,0,0,0 每一位原创 2017-02-22 17:03:14 · 321 阅读 · 0 评论 -
JS的平凡之路--简易的图片拖拽排序
由HTML5的拖放API,实现的简易图片拖放效果。一、HTML5拖放API的知识点 首先我们得知道元素怎么才可以被拖放,需要设置它们的draggable属性,其中img和a标签的dragable属性默认是true,不需要我们手动设置。 拖放API的监听事件如下:dragstart: 源对象拖拽开始;drag: 源对象拖拽的过程中;dragend: 源对象拖拽结束;dragenter:原创 2017-06-08 21:23:10 · 4504 阅读 · 0 评论 -
JS的平凡之路--单例模式的各种实现方式
单例模式:保证一个类有且仅有一个实例,并且有一个全局访问点。虽然JavaScript中没有类的概念,但是我们依旧可以用很多方式模拟单例模式。一、全局变量实现单例模式 用全局变量实现的单例模式: var singleton = { num: 1, add: function (a) {原创 2017-06-12 18:38:02 · 651 阅读 · 0 评论 -
必知必会的Node-CLI开发基础
本文带你了解创建一个Node-CLI工具所需知识点。一、命令行参数解析 在NodeJS中可以通过以下代码获取命令行中传递的参数: process.argv.slice(2) 但是这对于构建一个CLI工具远远不够,首先需要考虑参数输入的各种风格:Unix参数风格:前面加-,不过后面跟的是单个字符,例如-abc解析为[‘a’, ‘b’, ‘c’]。GNU参数风格:前面加–,例...原创 2018-10-15 22:03:48 · 2274 阅读 · 0 评论 -
打包升级:node-cron原理详解
打包升级:node-cron原理详解node-cron主要用来执行定时任务,它不仅提供cron语法,而且增加了NodeJS子进程执行和直接传入Date类型的功能。一、前言 在理解node-cron之前,需要先知道它的基本用法,下面是一个在每分钟的第20秒到第50秒之间每隔4秒执行一次的定时任务: const CronJob = require('../lib/cron.js').C...原创 2018-10-11 00:33:45 · 771 阅读 · 0 评论 -
946.Validate Stack Sequences [JavaScript]
一、题目Given two sequences pushed and popped with distinct values, return true if and only if this could have been the result of a sequence of push and pop operations on an initially empty stack.二、题目大意...原创 2018-11-27 23:03:35 · 136 阅读 · 0 评论 -
898. Bitwise ORs of Subarrays [JavaScript]
一、题目We have an array A of non-negative integers.For every (contiguous) subarray B = [A[i], A[i+1], …, A[j]] (with i &lt;= j), we take the bitwise OR of all the elements in B, obtaining a result A[i]...原创 2018-12-12 21:46:20 · 117 阅读 · 0 评论 -
890. Find and Replace Pattern [JavaScript]
一、题目You have a list of words and a pattern, and you want to know which words in words matches the pattern.A word matches the pattern if there exists a permutation of letters p so that after replacin...原创 2018-12-13 21:20:15 · 121 阅读 · 0 评论 -
563. Binary Tree Tilt [JavaScript]
一、题目 Given a binary tree, return the tilt of the whole tree. The tilt of a tree node is defined as the absolute difference between the sum of all left subtree node values and the sum of all right ...原创 2018-12-22 23:32:26 · 158 阅读 · 0 评论 -
543. Diameter of Binary Tree [JavaScript]
一、题目 Given a binary tree, you need to compute the length of the diameter of the tree. The diameter of a binary tree is the length of the longest path between any two nodes in a tree. This path may o...原创 2018-12-23 12:09:46 · 149 阅读 · 0 评论