摘要: 首先要区分表达式和声明function fn() { alert("");}这玩意儿 就是 声明 var bar = function foo(){}; // 表达式,因为它是赋值表达式的一部分 new function bar(){}; // 表达式,因为它是new表达式具体的区别可以参考这里为什么要分他的区别呢?js的解析器对函数声明与函数表达式并不是一视同仁地对待的。对于函数声明,js解析器会优先读取,确保在所有代码执行之前声明已经被解析,而函数表达式,如同定义其它基本类型的变量一样,只在执行到某一句时也会对其进行解析.例子: alert(fn())... 阅读全文
posted @ 2012-04-15 22:42 CallMeTommy 阅读(189) 评论(0) 推荐(0)
摘要: 最开始 觉得没区别 看了篇文章后发现有区别。就是在当用子类创建父类的时候就有区别了代码 直接用别人的了当然。 转载得有出处 http://www.cnblogs.com/xumingxiang/archive/2012/04/14/override_new.htmlpublic class C1{ public virtual string GetName() { return "徐明祥"; }}public class C2 : C1{ public override string GetName() { return "xuming... 阅读全文
posted @ 2012-04-15 19:54 CallMeTommy 阅读(248) 评论(0) 推荐(0)
摘要: 早前 对于json 格式的字符转 一直使用的是 eval()在看到一篇文章 eval 的安全隐患, 也就是说 eval(json) 中的数据可能已经被篡改。为了修正这玩意 于是查了查我查到的 有三种方式eval()eval( "(" + jsonString + ")" );new function()new Function( "return " + jsonString )();JSON.parseJSON.parse( jsonString );当然 前面两种自然是不推荐。 下面是浏览器 对JSON.parse的支持情况比较老了 阅读全文
posted @ 2012-03-14 18:13 CallMeTommy 阅读(508) 评论(0) 推荐(0)
摘要: 首先说明是反射,为什么要使用反射反射提供的是一种封装程序集、模块和类型的对象。通过反射可以动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。 这是官方的定义,反射往往是针对未知的东西,扩展,兼容。常说,反射性能差 为什么还要使用反射:1. 机能 现在的机器 大都是双核了,机能已经不是 多少年前能比了。2. 如果使用反射能简化程序代码,或者能有更好的可读性,扩展性. 那么确实可以不用去在意那么一点性能损失3. 使用反射往往都是在 程序初始化,或者不常用的地方。System.Type 类型。使用反射 必不可少的玩意儿Type 为 Sy. 阅读全文
posted @ 2012-01-02 22:19 CallMeTommy 阅读(440) 评论(0) 推荐(0)
摘要: 异常 1 try 2 { 3 //要捕获的代码 4 } 5 catch (Exception ex) 6 { 7 //如果上面的代码段缩了 做什么 8 } 9 finally10 { 11 //不管错没错 都要做得12 }关于throw 1 public static void Main() 2 { 3 try 4 { 5 a(); 6 } 7 catch (Exception ex) 8 ... 阅读全文
posted @ 2011-10-15 20:11 CallMeTommy 阅读(220) 评论(0) 推荐(0)
摘要: 其实关于书上提到的数据空中 可以为空的值类型这个问题我基本没有遇到过= =默认值这玩意儿很重要啊.在数据空中所有 值类型都应该是 不能为空 设置下比如 -1 之类的标志位就ok了System.Nullable // 摘要: // 表示基础类型为值类型的对象,值类型与引用类型一样也可以分配 null。 // // 类型参数: // T: // System.Nullable<T> 泛型类型的基础值类型。 [Serializable] [TypeDependency("System.Collections.Generic.Nulla... 阅读全文
posted @ 2011-10-10 09:47 CallMeTommy 阅读(206) 评论(0) 推荐(0)
摘要: System.Object 到 System.Array 然后所有数组都是从他派生首先是创建数组int[] a = new int[100];T[] a = new T[];T[] b = new T[] { T a,T b };二维数组T[,] a = new T[10,10];锯齿数组T[][] a = new T[3][];数组都是引用类型 所以他得机制也和普通的引用类型一样引用类型关于数组转型理论上这种情况不应该被允许。需要转型个人感觉就意味着 设计不合理= = 重构一下吧。数组复制1.Array.Clone1 int[] intArray1 = { 1, 2 };2 var o = 阅读全文
posted @ 2011-09-26 23:21 CallMeTommy 阅读(164) 评论(0) 推荐(0)
摘要: 十四 跳~枚举enum a { white = 1, black = 2 }一些方法 名称说明 CompareTo 将此实例与指定对象进行比较并返回一个对二者的相对值的指示。 Equals 返回一个值,该值指示此实例是否与指定的对象相等。 (重写 ValueType.Equals(Object)。) Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。) Format 根据指定格式将指定枚举类型的指定值转换... 阅读全文
posted @ 2011-09-22 22:03 CallMeTommy 阅读(230) 评论(0) 推荐(0)
摘要: 其实接口就语法来说 基本没什么可说的/// <summary>/// 接口的命名 最好以 Ixxxx 开头 算是规范吧/// 定义返回值 和 参数 不能实现方法/// 不能定义字段 但是 可以定义属性/// </summary>interface Iaaa{ //string aaa; 这样会报错 void aaa(string aa); string bbb { set; } //可以定义属性}/// <summary>/// 接口可以继承接口 /// 但是这里作者说 接口的继承和普通的继承不是一样/// 是契约形式 这里我也说不清楚 /// </s 阅读全文
posted @ 2011-09-18 20:34 CallMeTommy 阅读(228) 评论(0) 推荐(0)
摘要: 为什么要使用泛型性能优势 : 免去了装箱拆箱。 这个节省可不是一般的大啊..如果类型将操作值类型,那么就会产生装箱和拆箱操作,使用泛型能防止装箱和拆箱操作。泛型的强类型检查有助于快速查找错误代码简洁 : N个类的东西一个泛型类搞定.. 跟容易维护和编写安全。 当然你得写的兼容性差... 传什么都能执行那就完了缺点代码简洁 : 这是一把双刃剑, 大量使用泛型类 会使代码的可读性变得非常差 非常不容易维护关于性能其实书上比较了性能说的也比较清楚这里也有一篇关于 姐夫赵的 泛型真的会降低性能吗我就不在这里多做赘述了,泛型虽说提升不大 但是至少不会带来性能损失泛型的协变逆变 这个系列完成之后 会专门去 阅读全文
posted @ 2011-09-10 20:04 CallMeTommy 阅读(157) 评论(0) 推荐(0)