随笔分类 -  JavaScript

摘要:优先使用对象组合,而不是类继承; 类式继承:通过构造函数Child()来获取来自于另一个构造函数Parent()的属性; 默认模式:子类的原型指向父类的一个实例 function inherit(C, P) { C.prototype = new P(); } function Parent(nam 阅读全文
posted @ 2014-12-11 19:53 JinksPeng 阅读(203) 评论(0) 推荐(0)
摘要:沙箱模式: 解决空间命名模式的几个缺点: 命名空间模式中无法同时使用一个应用程序或库的两个版本运行在同一个页面中,因为两者需要相同的全局符号; 以点分割,需要输入更长的字符,解析时间也更长; 全局构造函数 //在命名空间模式中,可以使用全局对象;在沙箱模式中主要使用全局构造函数 添加特征: 强制ne 阅读全文
posted @ 2014-12-10 15:33 JinksPeng 阅读(147) 评论(0) 推荐(0)
摘要:命名空间: 优点:可以解决命名混乱和第三方冲突; 缺点:长嵌套导致更长的查询时间;更多的字符; 通用命名空间函数: var MYAPP = MYAPP || {}; MYAPP.namespace = function (ns_string) { var parts = ns_string.spli 阅读全文
posted @ 2014-12-10 13:29 JinksPeng 阅读(142) 评论(0) 推荐(0)
摘要:回调函数模式: 基本例子: 回调方法是对象方法的时候: var findNodes = function (callback, callback_obj) { ......... if(typeof callback 'string') { callback = callback_obj[callb 阅读全文
posted @ 2014-12-09 10:52 JinksPeng 阅读(214) 评论(0) 推荐(0)
摘要:库和API的设计: 在参数设计中保持好的习惯:如顺序,width,height;top,right,bottom,left;如命名; 将undefined看作没有值而不要表示非特定的值; 在允许0,空字符串等为有效参数的地方,不要通过真值测试(||)来实现参数默认值; 使用//var x undef 阅读全文
posted @ 2014-12-08 14:19 JinksPeng 阅读(147) 评论(0) 推荐(0)
摘要:使用Object的直接量实例构造轻量级的字典: 使用for/in循环,使用对象字面量来构建,并确保不增加Object.prototype属性来导致for/in循环;(考虑到兼容性,如Array.prototype是允许增加属性的); 如果确实需要在Object.prototype中增加属性那么使用O 阅读全文
posted @ 2014-12-06 15:45 JinksPeng 阅读(149) 评论(0) 推荐(0)
摘要:方法调用: 通常某个对象调用方法查找该方法并将该对象作为该方法的接受者(this); 使用call自定义接受者 可以调用在给定对象中不存在的方法; 定义高阶函数,允许使用者给回调函数指定接受者; 可以调用在给定对象中不存在的方法; 定义高阶函数,允许使用者给回调函数指定接受者; 使用bind方法: 阅读全文
posted @ 2014-12-05 11:26 JinksPeng 阅读(167) 评论(0) 推荐(0)
摘要:Unicode为世界上所有的文字系统的每一个字符单位分配了一个唯一的整数,称为代码点,范围为:0~1114111; ASCII将每一索引映射为唯一的二进制表示,但Unicode允许多个不同二进制编码的代码点; 不同的编码在要求存储的字符串数量和操作速度之间进行平衡,由此产生如UTF-8,UTF-16 阅读全文
posted @ 2014-12-04 20:54 JinksPeng 阅读(388) 评论(0) 推荐(0)
摘要:javascript的浮点数: Javascript的数字都是双精度浮点数; 64位编码数字; 能表达53位精度的整数; 进行位运算时会隐式地转化为32位整数(0,1序列)后计算; 浮点数运算可能会有精度问题,最好是都用整数计算; 严格模式:考虑到兼容性问题,可以用将自身包裹在立即调用的函数表达式里 阅读全文
posted @ 2014-12-04 12:24 JinksPeng 阅读(163) 评论(0) 推荐(0)
摘要:消除代码全局变量名占用: //本质是使用匿名函数; //要使函数内的变量不被释放,需要使用引用; 一次性的构造函数: //维护原型链,保证标识符重写后,实例.constructor仍指向构造器; 对象充当识别器: //利用对象实例在全局的唯一性 识别构造器调用: 快速调用对象方法: //使用appl 阅读全文
posted @ 2014-11-13 13:46 JinksPeng 阅读(147) 评论(0) 推荐(0)
摘要:对于括号内: 通过赋值时发生的重写: 语法声明阶段的重写: //会报错,一般引擎不承认在表达式中声明的标识符; 重写: 对内部对象系统的影响: 重写内置构造器:任意构造器的原型属性不受内置构造器重写的影响,它总是创建自一个系统引擎中的构造器; 重写内置构造器的原型:会影响内部对象系统; 对象类型的直 阅读全文
posted @ 2014-11-13 10:35 JinksPeng 阅读(306) 评论(0) 推荐(0)
摘要:语言:程序最终被表达为数据(结构)和逻辑(算法),命令式和说明式/函数式语言分别从这两方面分类; 动态:在语言陈述时无法确定,必须在计算机执行时才能确定语言关系;JS是完全动态语言,导致其不确定性一般包括: 标识符确定:表现为动态类型,动态重写,动态存取数据结构; 语句上下文确定:表现为动态变量/语 阅读全文
posted @ 2014-11-12 08:47 JinksPeng 阅读(1396) 评论(0) 推荐(0)
摘要:闭包: //JS函数式风格中,在内部保存数据和对外无副作用这两个特性主要就是通过闭包实现的; 函数与闭包: 一个函数是一段静态代码,它是一个代码书写时已经编译期,静态概念;闭包是函数在代码运行过程中产生的一个动态环境,是一个运行期,动态的概念; 函数引用和函数实例://在被调用时,每个函数实例至少拥 阅读全文
posted @ 2014-11-10 20:00 JinksPeng 阅读(229) 评论(0) 推荐(0)
摘要:形式化运算系统的研究: 图灵:提出图灵机形式系统,通过0,1运算系统来解决复杂问题; 冯诺依曼:提出了冯诺依曼体系;即通过修改内存反映运算结果; 阿隆左.丘奇:提出新的运算范型Lambda演算,计算机运算才是本质,修改内存只不过是这种运算规则的副作用; 后出现函数式语言的鼻祖:LISP; 函数式语言 阅读全文
posted @ 2014-11-09 20:00 JinksPeng 阅读(225) 评论(0) 推荐(0)
摘要:封装: 一把对象系统,封装是由语法解析来实现的,即语法作用域;但js是动态语言,因此只能依赖变量作用域; js的变量作用域只有表达式,函数,全局三种;所以js只能实现public和private两种封装性; //js中类表现为构造器: function MyObject () { //private 阅读全文
posted @ 2014-11-08 16:35 JinksPeng 阅读(168) 评论(0) 推荐(0)
摘要:面向对象有三个基本特性:封装,继承,多态;如果都满足的话称为面向对象语言;而部分满足则称为基于对象语言; 数据类型实现模型描述: JavaScript对象模型: 构造过程:函数->构造器 构造器首先是一个函数,可以理解为函数初始化的时候其prototype是无值的,只有在需要引用到原型时,才具有构造 阅读全文
posted @ 2014-11-06 19:09 JinksPeng 阅读(258) 评论(0) 推荐(0)
摘要:js基础语法:由语句、表达式和变量构成; 语句是主要表达方式:单语句->复合语句(代码块)->程序片段(函数);js中没有单元和程序的概念; 作用域: 语法作用域与变量作用域的区别:前者是语法分析阶段对代码块组织结构的理解;后者是代码执行阶段对变量存储的理解; (有些地方也成为静态作用域和动态作用域 阅读全文
posted @ 2014-11-06 13:40 JinksPeng 阅读(160) 评论(0) 推荐(0)
摘要:计算模型:源于对计算过程的不同认识; 1.基于不同计算模型一般分为://教科书的一般分类 命令式语言; 函数式语言; 逻辑式语言; 面向对象程序设计语言; 2.基于程序本质分类: //编程的经典法则:算法+数据结构=程序; 命令式: //基于数据结构 结构化编程(冯诺依曼:计算机系统以存储和处理为核 阅读全文
posted @ 2014-10-09 09:12 JinksPeng 阅读(183) 评论(0) 推荐(0)
摘要:实例创建:obj = new contructor[(arguments)]; //如果没有参数可以忽略括号;所以注意这不是函数调用; 直接量与初始器:在之前的基本表达式中将直接量与初始器分开,这时因为直接量的声明中不包括运算过程,而初始器的声明中可以包括运算过程。 直接量:一般分为6种,包括正则表 阅读全文
posted @ 2014-10-07 10:21 JinksPeng 阅读(461) 评论(0) 推荐(0)
摘要:JS语句分类:(注意语句都是有返回值的) 声明语句: 变量声明语句; 标签声明语句; 函数声明语句; 表达式语句:(表达式加分号) 变量赋值语句:具有声明一个变量的隐式效果; 函数调用语句; 属性赋值语句; 方法调用语句; 分支语句: 条件分支语句; 多重分支语句; 循环语句: for() for. 阅读全文
posted @ 2014-10-06 19:45 JinksPeng 阅读(272) 评论(0) 推荐(0)