2015-10-18 Li Shuai
"可迭代对象"与"迭代器" Python中迭代器指的是实现了__iter__协议与next()方法的对象,其中__iter__协议中返回对象自身(self),next()方法每次返回单一元素,直至所有元素遍历结束,抛出'StopIteration'异常结束。 可迭代对象是一种更宽泛的定义,只要对象实现了__iter__协议,返回一个迭代器(并不像迭代器一样必须返回自身self)用来遍历自己的元素集合,那这个对象就是可迭代的对象,也意味着可以直接通过for item in obj...的方式遍历。 iter(a) is iter(a)? >>a = [1, 2, 3] >>iter(a) is iter(a) #(1) >>F 继续阅读 »
2016-10-12 曹强
中介者模式的作用就是解除对象与对象之间的紧耦合关系。增加一个中介者对象后,所有的相关对象都可以通过中介者对象来通信,而不是相互引用,所以当一个对象发生改变时,只需要通知中介者对象即可。中介者模式使网状的多对多关系变成了相对简单的一对多关系。 中介者模式的例子--购买商品 假如我们正在编写一个手机购买的页面,在购买流程中,可以选择手机的颜色以及输入购买数量,同时页面中有两个展示区域,分别向用户展示选择好的颜色和数量。 show the code: var colorSelect = document.getElemmentById('colorSelect'), numberInput= document.getEl 继续阅读 »
2016-09-10 曹强
前言 命名、抽象、标识是通用设计结构的主要方面,这些设计结构能被用于构造可复用的面向对象设计。设计模式确定所包含的类和实例、它们的角色、协作方式以及职责分配。 每一种设计模式都重点关注一个特定的对象设计问题或者设计要点,描述何时使用它,在另一些约束条件下是否还能使用,以及使用的效果和利弊。由于我们最终要实现设计,设计模式还是提供了示例,代码来阐明其实现。 虽然设计模式描述的是面向对象设计,但是他们都是基于实际的解决方案。这些设计方案的实现语言是主流面向对象的编程语言。 more 设计模式的分类 创建型设计模式 创建型设计模式专注于处理对象创建机制,以适合给定情况下的方式来创建对象,创建对象的基本方法都可能导致项目复杂性增 继续阅读 »
2017-03-04 高悦翔
前两章介绍基础, 没什么笔记好记录. 这是第三章. 什么是对象 在JavaScript中, 除了简单数据类型(数字, 字符串, 布尔值, null和undefined), 其他所有的值都是对象Object. 其中number string和boolean虽然拥有方法, 但他们并不是object, 因为他们是不可变的. 继续阅读 »
2016-09-19 曹强
Javascript语言的设计不够严谨,很多地方一不小心就会出错。 举例来说,请考虑以下情况。 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明。用自然语言描述的算法如下: javascript if (myObj不存在){ 声明myObj; } 你可能会觉得,写出这段代码很容易。但是实际上,它涉及的语法问题,远比我们想象的复杂。Juriy Zaytsev指出,判断一个Javascript对象是否存在,有超过50种写法。只有对Javascript语言的实现细节非常清楚,才可能分得清它们的区别。 more 第一种写法 根据直觉,你可能觉得可以这样写: javascript if (!myObj) 继续阅读 »
2016-10-12 曹强
发布—订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。在JavaScript开发中,我们一般用事件模型来替代传统的发布—订阅模式。 发布—订阅模式可以广泛应用于异步编程中,这是一种替代传递回调函数的方案。比如,我们可以订阅ajax 请求的error、succ 等事件。 或者如果想在动画的每一帧完成之后做一些事情,那我们可以订阅一个事件,然后在动画的每一帧完成之后发布这个事件。在异步编程中使用发布—订阅模式,我们就无需过多关注对象在异步运行期间的内部状态,而只需要订阅感兴趣的事件发生点。 发布—订阅模式可以取代对象之间硬编码的通知机制,一个对象不用再显式地调用 继续阅读 »
2016-04-29 zzyhappyzzy
iOS
strong、weak、unsafe_unretained、autoreleasing、copy说明 strong 指针的默认类型。该指针指向的对象在指针存活期间一直存在,不会被销毁。 weak 当没有strong指针指向对象时,weak指针指向的对象将被销毁,同时weak指针为变为nil。 unsafe_unretained 该指针指向的对象销毁时,该指针不会被置为nil,而是被挂起(类似野指针)。最好别用 autoreleasing 一般指向函数的参数类型为id *并且自动释放的参数。 copy 类似strong,但是会复制一份新的对象(即指向新的内存地址),新指向的对象存活期同strong。 参考链接 Apple 继续阅读 »
2016-07-31 曹强
原型链继承 让构造函数的原型对象等于另一个类型的实例,利用原型让一个引用类型继承另一个引用类型的属性和方法 ``` function SuperType() { this.property=true; } SuperType.prototype.getSuperValue=function(){ return this.property; }; function SubType() { this.subProperty=false; } //继承SuperType SubType.prototype=new SuperType(); SubType.prototype.getSubValue=f 继续阅读 »
2012-09-29 Xie Jingyi
以前我是完全不理解类的概念的,我只是把它当成一个Record来看,只不过它里面可以包含函数和过程罢了。但深入VCL学习后我才发现,原来面向对象的世界是这么精彩。 大家都应该见过闹钟吧?随便给一个人一个闹钟,他都会用,不管是电子钟还是机械钟。但如果给一个人一堆零件,有谁能够将他们组装成一个闹钟呢?如果没有专业的知识,恐怕没有人会。为什么呢?为什么人人都会用但很少人懂得其内部结构呢?因为闹钟这一类事物提供一个标准的操作接口,如发条、钟表盘等。不管是液晶屏还是钟表盘,虽然他们形式不同,但他们都是用来显示时间的;同时,闹钟有隐藏了其内部实现的细节,用一层外壳将他们“封装”起来,使外界无法接触其内部,保持了内部的稳定性以及保证了机械运作的安 继续阅读 »
2017-10-09 wilsonIs
使用object对象来设置pdf文件的加载,兼容IE、Chrome、Firefox。 可以在data属性中设置文件的默认参数,如下文件中所示,来设置pdf阅读的初始状态。代码如下所示: 继续阅读 »