分类 "JS&HTML" 的存档.

js 操作option

经常要弄一些联动菜单之类的效果,用js操作option就不可避免了。

一般这种特效需要我们实现两种操作:

  1. 清空option
  2. 根据ajax返回结果,动态创建option

阅读更多…

JavaScript 对象的属性名

之前一直不曾在意,原来,在JS的对象直接量中,属性名即可以放在引号内,也可以不放在引号内。

例如:

var o = {'name':'小小子'};

var o = {"name":'小小子'};

var o = {name:'小小子'};

阅读更多…

付出总有回报

这几天晚上回到家里没闲着,在网上找了本书,终于弄明白自己一直半懂且不懂装懂的一件事情。

那就是闭包与作用域的事情,想想前两天写的日志,虽然当时自己用另外一种方式处理了。即借用于中间函数,不过始终是脱离了自己原来预想的闭包实现法。既然偶有所感,不如改写一下。
阅读更多…

JS 常用继承实现方式

看《JavaScript 设计模式》,关于里面提到的JS继承实现的方式,分为三种,且书中都给出了相关实现。这里也不再做讲解,只求记录一下,因为自己总是有时候会忘记这些东西。

  1. 类式继承,extend
  2. 原型式继承,clone
  3. 掺元类继承,augment

阅读更多…

不要纠结于实现的圈套中

有的时候,过于钻牛角尖并不是什么好事,只会把自己越套越牢。换个思路,其实方法很简单。近来忙着改一些东西,需求来的时候真是锐不可挡。被越来越多的任务压的喘不过气来。

今天在写一个适应于所有游戏充值页面的js,希望大多数页面可以共用一套js,方便维护。在这个过程中,遇到了如下问题:
阅读更多…

JavaScript Interface 接口的实现

JavaScript是弱类型语言,所以类型匹配问题很难追踪。同时,Js并没有像其他语言一样,提供内置的创建或实现接口的方法。这样,在我们进行对象转化的时候是很困难的。

不过,我们还是可以使用程序来模拟JavaScript Interface接口的实现。一般来说,模拟Interface的实现有如下三种方法:

  1. 注释法——将接口的定义写在注释中,大家能否小心注意,以实现接口的所有方法全凭自觉
  2. 属性检查法——自己说明我实现了哪些接口,一会儿你检查的时候记得检查我说我实现的接口里面,是否把我真正想要实现的接口全部实现了(这么别扭呢),总之就是自欺欺人
  3. 鸭式辨型法——像鸭子一样,嘎嘎叫的那么就是鸭子。具有鸭子特性的东西,我们就可以称之为鸭子。能直立行走,会使用工具的除了机器人,都是人。嗯~~

按照书中介绍的,我们也一样彩注释法与鸭式辨型相结合的方法,来模拟Js的接口实现。
阅读更多…

JavaScript Creating Objects Other Pattern

前面的日志中,抄了好多创建JavaScript对象的方法,包括工厂模式、原型模式、构造函数模式、混合模式、动态原型模式等。好了,大家快看烦了,日志也快结束了。

书中还为我们介绍了另外两种创建JavaScript对象的方法:寄生构造器模式和持久构造器模式。大家再忍耐一下,让我抄完~~
阅读更多…

JavaScript Dynamic Prototype Pattern

熟悉其它面向对象语言的人们在看待JS混合模式时总是感觉很奇怪,将构造函数和原型模式分开写让他们感觉很不爽。这里略微抱怨一下,众口总是难调。十全九美其实挺好。

那么为了让这一部分人爽起来,就有必要来介绍一下动态原型模式。

The dynamic prototype pattern seeks to solve this problem by encapsulating all
of the information within the constructor while maintaining the benefits of using both a constructor
and a prototype by initializing the prototype inside the constructor, but only if it is needed.

在我们的构造函数内部实现时,我们通过判断其原型链上的函数是否已经存在来决定是否为其原型对象设置方法,以便达到我们共享函数的目的(方法放在其原型对象上了)。

阅读更多…

JavaScript Combination Constructor/Prototype Pattern

前面介绍过的Constructor pattern 和 Prototype pattern,都有着各自的优势和劣势。目前,创建自定义类型通用的方法是使用二者的混合模式。下面,我们就来使用混合模式重写前面的例子:

The constructor pattern defines instance properties, whereas the prototype pattern defines
methods and shared properties. With this approach, each instance ends up with its own copy of the
instance properties, but they all share references to methods, conserving memory. This pattern allows
arguments to be passed into the constructor as well, effectively combining the best parts of each pattern.

阅读更多…

JavaScript Creating Objects — The Prototype Pattern

关于原型模式中最重要的概念,prototype,请大家参照我之前的日志JavaScript prototype原型对象,话说那篇日志都发表半年了,沙发还健在,实在是强悍。

用原型模式解决问题

在prototype里定义的方法,会被其所有实例化后的对象共享,省了我们的内存这就足够了。这也就解决了工厂模式和构造函数模式中存在的问题。
阅读更多…