Welcome 微信登录

首页 / 脚本样式 / JavaScript

深入理解JavaScript系列(45):代码复用模式(避免篇)详解

深入理解JavaScript系列(45):代码复用模式(避免篇)详解

介绍任何编程都提出代码复用,否则话每次开发一个新程序或者写一个新功能都要全新编写的话,那就歇菜了,但是代码复用也是有好要坏,接下来的两篇文章我们将针对代码复用来进行讨论,第一篇文避免篇,指的是要尽量避免使用这些模式,因为或多或少有带来一些问题;第二排是推荐篇,指的是推荐大家使用的模式,一般不会有什么问题。模式1:默认模式代码复用大家常用的默认模式,往往是有问题的,该模式使用Parent()的构造函数创建一个对象,并且将该对象赋值给Child()的原型。我们...
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解

深入理解JavaScript系列(46):代码复用模式(推荐篇)详解

介绍本文介绍的四种代码复用模式都是最佳实践,推荐大家在编程的过程中使用。模式1:原型继承原型继承是让父对象作为子对象的原型,从而达到继承的目的:复制代码 代码如下:function object(o) { function F() { } F.prototype = o; return new F();}// 要继承的父对象var parent = { name: "Papa"};// 新对象var child = object(parent);// 测试...
深入理解JavaScript系列(47):对象创建模式(上篇)

深入理解JavaScript系列(47):对象创建模式(上篇)

介绍本篇主要是介绍创建对象方面的模式,利用各种技巧可以极大地避免了错误或者可以编写出非常精简的代码。模式1:命名空间(namespace)命名空间可以减少全局命名所需的数量,避免命名冲突或过度。一般我们在进行对象层级定义的时候,经常是这样的:复制代码 代码如下:var app = app || {};app.moduleA = app.moduleA || {};app.moduleA.subModule = app.moduleA.subModule |...
Nodejs关于gzip/deflate压缩详解

Nodejs关于gzip/deflate压缩详解

0x01.关于写http时候,在接收http请求时候,出现乱码,后来发现是gzip没有解压。关于gzip/deflate压缩,有放入管道压缩,和非管道压缩方法。0x02.管道压缩Node中的I/O是异步的,因此对磁盘和网络的读写需要通过回调函数来读取数据。当内存中无法一次装下需要处理的数据时,或者一边读取一边处理更加高效时,我们就需要用到数据流。NodeJS中通过各种Stream来提供对数据流的操作。官网提供了管道方法:复制代码 代码如下:// clien...
深入理解JavaScript系列(48):对象创建模式(下篇)

深入理解JavaScript系列(48):对象创建模式(下篇)

介绍本篇主要是介绍创建对象方面的模式的下篇,利用各种技巧可以极大地避免了错误或者可以编写出非常精简的代码。模式6:函数语法糖函数语法糖是为一个对象快速添加方法(函数)的扩展,这个主要是利用prototype的特性,代码比较简单,我们先来看一下实现代码:复制代码 代码如下:if (typeof Function.prototype.method !== "function") { Function.prototype.method = function (n...
jQuery中大家不太了解的几个方法

jQuery中大家不太了解的几个方法

jQuery近些年来仍旧是web开发中最受欢迎的类库,虽然大家褒贬不一,但是仍旧不失为一款最流行的Javascript,在事件中return false可能大家在编写事件相关代码的时候,有时候会使用return false语句,代码如下:复制代码 代码如下:$("a").click(function() { $(".gbtags").toggle(); return false;}以上代码中,我们点击a元素,如果不return false,会触发对应a元素...
深入理解JavaScript系列(49):Function模式(上篇)

深入理解JavaScript系列(49):Function模式(上篇)

介绍本篇主要是介绍Function方面使用的一些技巧(上篇),利用Function特性可以编写出很多非常有意思的代码,本篇主要包括:回调模式、配置对象、返回函数、分布程序、柯里化(Currying)。回调函数在JavaScript中,当一个函数A作为另外一个函数B的其中一个参数时,则函数A称为回调函数,即A可以在函数B的周期内执行(开始、中间、结束时均可)。举例来说,有一个函数用于生成node复制代码 代码如下:var complexComputation...
深入探讨javascript中的数据类型

深入探讨javascript中的数据类型

学一门编程语言,无非两方面:一是语法,二是数据类型。类C语言的语法不外乎if、while、for、函数、算术运算等,面向对象的语言再加上object。语法只是语言设计者预先做的一套规则,不同语言语法不尽相同,但都有一些共通点,对于熟悉一两门编程语言的人,学其他的编程语言时,语法往往不是问题(当然,如果你一直学的是类C语言,那么首次接触lisp时肯定也要花些时间),学习的重点往往是数据类型及其相关操作上,不是有句老话:“数据结构+算法=程序”!其次,有些语言...
深入理解JavaScript系列(50):Function模式(下篇)

深入理解JavaScript系列(50):Function模式(下篇)

介绍本篇我们介绍的一些模式称为初始化模式和性能模式,主要是用在初始化以及提高性能方面,一些模式之前已经提到过,这里只是做一下总结。立即执行的函数在本系列第4篇的《立即调用的函数表达式》中,我们已经对类似的函数进行过详细的描述,这里我们只是再举两个简单的例子做一下总结。复制代码 代码如下:// 声明完函数以后,立即执行该函数(function () { console.log("watch out!");} ());//这种方式声明的函数,也可以立即执行!f...
JavaScript设置获取和设置属性的方法

JavaScript设置获取和设置属性的方法

getAttribute该方法用来获取元素的属性,调用方式如下所示:复制代码 代码如下:object.getAttribute(attribute)以此前介绍的一些方法不同,getAttribute方法不属于document对象,所以不能通过document对象调用。它只能通过元素节点对象来调用。该方法只接受一个参数,你指定要查询的属性的名字。如果指定的属性没有设置,结果将返回null对象。setAttribute以上面作用相反的是setAttribute...
深入理解JavaScript系列(17):面向对象编程之概论详细介绍

深入理解JavaScript系列(17):面向对象编程之概论详细介绍

介绍在本篇文章,我们考虑在ECMAScript中的面向对象编程的各个方面(虽然以前在许多文章中已经讨论过这个话题)。我们将更多地从理论方面看这些问题。 特别是,我们会考虑对象的创建算法,对象(包括基本关系 - 继承)之间的关系是如何,也可以在讨论中使用(我希望将消除之前对于JavaScript中OOP的一些概念歧义)。英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-7-1-oop-general-the...
JavaScript中常见获取元素的方法汇总

JavaScript中常见获取元素的方法汇总

常见的获取元素的方法有3种,分别是通过元素ID、通过标签名字和通过类名字来获取。getElementByIdDOM提供了一个名为getElementById的方法,这个方法将返回一个与之对应id属性的节点对象。使用的时候请注意区分大小写。它是document对象特有的函数,只能通过其来调用该方法。其使用的方法如下:复制代码 代码如下:document.getElementById("demo") //demo是元素对应的ID该方法兼容主流浏览器,甚至包括I...
JavaScript中的关联数组问题

JavaScript中的关联数组问题

复制代码 代码如下:var beatles = ["john","Paul","George","Ringo"];上面中的beatles数组是个传统数组典型的例子:每个元素的下标是一个数字,每增加一个元素,这个数字就依次增加1。第一个元素的下标是0,第二个元素的下标是1。以此类推。如果在填充数组时只给出了元素的值,这个数组就将是一个传统数组,它的各个元素的下标将被自动创建和刷新。可以通过在填充数组时为每个新元素明确地给出下标来改变这种默认的行为。在为新元素...
JavaScript常用脚本汇总(二)

JavaScript常用脚本汇总(二)

把JavaScript中的伪数组转换为真数组在 JavaScript 中, 函数中的隐藏变量 arguments 和用 getElementsByTagName 获得的元素集合(NodeList)都不是真正的数组,不能使用 push 等方法,在有这种需要的时候只能先转换为真正的数组。对于 arguments,可以使用 Array.prototype.slice.call(arguments); 来达到转换的目的,但对于 NodeList 则不行了,其在 I...
<< 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 >>