经常要弄一些联动菜单之类的效果,用js操作option就不可避免了。
一般这种特效需要我们实现两种操作:
- 清空option
- 根据ajax返回结果,动态创建option
Say you say me ,say we together~~
之前一直不曾在意,原来,在JS的对象直接量中,属性名即可以放在引号内,也可以不放在引号内。
例如:
看《JavaScript 设计模式》,关于里面提到的JS继承实现的方式,分为三种,且书中都给出了相关实现。这里也不再做讲解,只求记录一下,因为自己总是有时候会忘记这些东西。
有的时候,过于钻牛角尖并不是什么好事,只会把自己越套越牢。换个思路,其实方法很简单。近来忙着改一些东西,需求来的时候真是锐不可挡。被越来越多的任务压的喘不过气来。
今天在写一个适应于所有游戏充值页面的js,希望大多数页面可以共用一套js,方便维护。在这个过程中,遇到了如下问题:
阅读更多…
JavaScript是弱类型语言,所以类型匹配问题很难追踪。同时,Js并没有像其他语言一样,提供内置的创建或实现接口的方法。这样,在我们进行对象转化的时候是很困难的。
不过,我们还是可以使用程序来模拟JavaScript Interface接口的实现。一般来说,模拟Interface的实现有如下三种方法:
按照书中介绍的,我们也一样彩注释法与鸭式辨型相结合的方法,来模拟Js的接口实现。
阅读更多…
前面的日志中,抄了好多创建JavaScript对象的方法,包括工厂模式、原型模式、构造函数模式、混合模式、动态原型模式等。好了,大家快看烦了,日志也快结束了。
书中还为我们介绍了另外两种创建JavaScript对象的方法:寄生构造器模式和持久构造器模式。大家再忍耐一下,让我抄完~~
阅读更多…
熟悉其它面向对象语言的人们在看待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.
在我们的构造函数内部实现时,我们通过判断其原型链上的函数是否已经存在来决定是否为其原型对象设置方法,以便达到我们共享函数的目的(方法放在其原型对象上了)。
前面介绍过的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.
关于原型模式中最重要的概念,prototype,请大家参照我之前的日志JavaScript prototype原型对象,话说那篇日志都发表半年了,沙发还健在,实在是强悍。
在prototype里定义的方法,会被其所有实例化后的对象共享,省了我们的内存这就足够了。这也就解决了工厂模式和构造函数模式中存在的问题。
阅读更多…