2016-09-10 曹强
前言 在经典的面相对象语言编程中,Constructor是一种在内存已分配给该对象的情况下,用于初始化新创建对象的特殊方法。在Javascript中,几乎所有东西都是对象,我们通常最感兴趣的是object构造器。 object构造器用于创建特定类型的对象——准备好对象以备使用,同时接收构造器可以使用的参数,以在第一次创建对象时,设置成员属性和方法的值。 more 基本Constructor Javascript虽然不支持类的概念,但它确实支持与对象一起用的特殊constructor函数,通过在构造器前面加new关键字,告诉Javascript像使用构造器一样实例化一个新对象,并且对象成员由该函数定义。 在构造器内,th 继续阅读 »
2016-04-02 derekchan
从字面来解释,多态就是事物的多种表现形式;从面向对象角度来解释的话,多态就是不同对象中同种行为的不同实现方式。举个例子:比如人吃饭,不同的人吃饭方式都是不同的,比如你可能是委婉型的,小口小口慢慢地吃,我是大口大口豪放型的吃。这就是吃饭这个行为的不同表现形式,统称「多态」。 继续阅读 »
2012-08-19 walter lee
判断对象已经死的方法:1.引用计数法 2根搜索算法 GC Roots: 1 虚拟机栈(栈帧中的本地变量表)中的引用对象。 2 方法区中的类静态属性引用的对象。 3 方法区中的常量引用的对象。 4 本地方法栈中JNI(即一般说的Native方法)的引用的对象。 四种引用: 1.强引用只要引用还存在,垃圾收集器永远不会回收掉被引用的对象 2.软引用(SoftReference)用来描述一些还有用,但并非必需的对象。系统将要发生内存溢出异常之前,把这些对象进行回收。 3.弱引用(WeakReference)下一次垃圾回收发生时就会回收 4.虚引用(Phant 继续阅读 »
2016-09-18 ruki
tbox内置的libc库,有一份自有的printf实现,在支持了所有标准格式化参数的同时,也对其进行了一些扩展,来支持自定义的格式化参数打印, 例如: ```c // 输出定点数:3.14 tb_printf("%{fixed}\n", tb_float_to_fixed(3.14)); // 输出ipv4地址:127.0.0.1 tb_ipv4_t addr; tb_ipv4_set(&addr, "127.0.0.1"); tb_printf("%{ipv4}\n", &addr); ``` 以上两种都是TBOX内置的对象参数打印,你只需要吧你需要打印的对象名和对象描述函数注册进来,就行了。 其中%{ob 继续阅读 »
2015-10-30 blademainer
开发中遇到的问题 在scala开发过程中,有需要使用Class获取scala单例(孤立)对象的需求,但是直接使用Class.newInstance()是无法获取单例对象的。 发现 google之后,在一篇博客:http://blog.csdn.net/zhangjg_blog/article/details/23376465 其中有一个例子: scala object Test { val a = "a string"; def printString = println(a) } 编译之后可以看到有两个class文件: Test$.class Test.class 也就是说, 这个孤立对象也被编译成一 继续阅读 »
2014-06-21 W.Y.
此文译自 Dmitry A. Soshnikov 的 ECMA-262-3 in detail. Chapter 7.1. OOP: The general theory. 概述 本文主要讨论 ECMAScript 中面向对象编程。之前已经有大量的文章讨论过该话题了,但本文与那些文章不同,本文主要从理论方面来解析其内部原理。重点讨论对象创建算法,对象之间的关系(包含最基本的关系 -- 继承)是如何形成的,并给出了明确的定义(我希望这可以消除一些文章中对于 JavaScript 中 OOP 的疑虑和混乱)。 more 概论、范式和思想 在开始讨论之前,有必要掌握一些 OOP 的基本特征,并弄清楚一些基本概念。 ECMAScr 继续阅读 »
2014-05-20 W.Y.
此文译自 Dmitry A. Soshnikov 的 JavaScript. The core.. 本文是详解 ECMA-262-3 系列的概述和总结。每个部分都包含对应章节的连接,所以你可以阅读它们以获得更深入的了解。 目标阅读者:有经验的程序员,专业人士。 我们从对象的概念开始,这是 ECMAScript 的根本。 more 对象 ECMAScript 做为一个高度抽象的面向对象语言,是通过对象来交互的。即使 ECMAScript 里边也有基本类型,但是,当需要的时候,它们也会被转换成对象。 一个对象就是一个属性集合,并拥有一个独立的 prototype(原型)对象。这个 prototype 可以是一个对象或者 nu 继续阅读 »
2016-09-19 曹强
jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本。 每个版本都会引入一些新功能。今天我想介绍的,就是从jQuery 1.5.0版本开始引入的一个新功能----deferred对象。 这个功能很重要,未来将成为jQuery的核心方法,它彻底改变了如何在jQuery中使用ajax。为了实现它,jQuery的全部ajax代码都被改写了。但是, 它比较抽象,初学者很难掌握,网上的教程也不多。所以,我把自己的学习笔记整理出来了,希望对大家有用。 more 什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同 继续阅读 »
2016-10-12 曹强
代理模式是为一个对象提供一个代用品或占位符,以便控制对他的访问。代理模式的关键是,当客户不方便直接访问一个对象或者不满足需要的时候,提供一个对象来控制这个对象的访问,客户实际上访问的是替身对象。替身对象对请求做出一些处理后再把请求转交给本体对象。 不使用代理:客户 → 本体 使用代理:客户 → 代理 → 本体 先来一个带点趣味性的例子,小明要给女神A送花,然后他不好意思,打算让B代送 var Flower = function(){}; var xiaoming = { sendFlower: function( traget ) { var flower = new Flower(); t 继续阅读 »
2013-11-28 veryyoung
观察者模式很好理解,类似于邮件订阅和RSS订阅. 当我们浏览一些博客或wiki时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。 其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化! 对象之间是一种一对多的关系。先来看看关系图: 我解释下这些类的作用:SubjectClient类就是我们的主对象,Observer1和Observer2是依赖于AbstactSubject的对象,当AbstactSubject变化时,Observer1和Observer2必然变化。AbstractSubject类中定义着需要监控的对象列表,可以对其进行修改:增加或删除被监控对 继续阅读 »