摘要:Object对象详细参考 本文参考MDN做的详细整理,方便大家参考 "MDN" JavaScript原生提供一个Object对象(注意起首的O是大写),所有其他对象都继承自这个对象。 构造函数: Object 构造函数为给定的值创建一个对象包装。 如果给定值是 null or undefined,将
阅读全文
摘要:深入理解:JavaScript原型与继承 看过不少书籍,不少文章,对于原型与继承的说明基本上让人不明觉厉,特别是对于习惯了面向对象编程的人来说更难理解,这里我就给大家说说我的理解。 首先JavaScript是一门基于原型编程的语言,它遵守原型编程的基本原则: 1. 所有的数据都是对象(javascr
阅读全文
摘要:在我学习过程中收集的一些常用技巧: typeof x !== undifined 判断x是否已定义; x Object(x) 判断x是否为对象; Object.keys(x).length 获取对象x所有可枚举的元素的个数; Object.getOwnPropotyNames(x).length 获
阅读全文
摘要:setTimeout应用 var ids = [];function foo1(i) { this.i = i; console.log('i = '+i); ids[0] = setTimeout((function () { foo1(i); }),1000);}function foo2(j)
阅读全文
摘要:函数的两种创建方式:函数定义表达式、函数声明语句 编译时,函数声明语句创建的函数会‘被提前’至外部函数的作用域顶部,在该作用域内可以被随意调用; 而函数表达式创建的函数,要调用它必须赋值给一个变量,编译时将把它当做变量处理,会‘声明提前’,无法调用函数体本身; 函数定义表达式创建的函数也可包含名称,
阅读全文
摘要:枚举对象的属性:通常用for(...in...)来循环遍历,由于 for in 总是要遍历整个原型链,因此如果一个对象的继承层次太深的话会影响性能 for(var i in foo){ if(foo.hasOwnProperty(i)){ console.log(i); } } 推荐总是在for i
阅读全文
摘要:JSON 是一种用来序列化对象、数组、数值、字符串、布尔值和 null 的语法。它基于 JavaScript 语法,但是又有区别:一些 JavaScript 值不是 JSON,而某些 JSON 不是 JavaScript 值 JSON表示的对象和数组: 属性名称必须用双引号包裹;最后一个属性后面不能
阅读全文
摘要:用于模式匹配的String方法: String支持4种使用正则表达式的方法: seach()用于检索,参数是一个正则表达式,返回第一个与之匹配的子串的位置,找不到则返回-1,如果参数不是正则表达式,则首先会通过RexExp构造函数将它转换成正则表达式,seach()方法不支持全局搜索,它忽略修饰符g
阅读全文
摘要:正则表达式(RegExp对象) 1.正则表达式字面量,在脚本加载后编译。若你的正则表达式是常量,使用这种方式可以获得更好的性能,重复使用时不会重新编译; 2.使用构造函数创建的RegExp,提供了对正则表达式运行时的编译。主要用于当你知道正则表达式的模式会发生改变时,或者你事先并不了解它的模式或者是
阅读全文
摘要:正则表达式的模式规则是由一个字符系列组成的,包括所有字母和数字在内;大多数的字符(所有字母和数字)都是按字符的直接量来描述带匹配的字符;一些具有特殊语义的字符按照其特殊语义来进行匹配,有些字符需要通过(\)进行转义; 字符 匹配 字母,数字 自身 \o NUL字符\u0000 \t 制表符\u000
阅读全文
摘要:面向对象的模块化编程 模块是一个独立的JS文件,模块文件可以包含一个类定义、一组相关的类、一个实用函数库、一些待执行的代码 模块化的目标:支持大规模的程序开发,处理分散源代码的组装,并能让代码正确执行;不同的模块必须避免修改全局上下文,模块应当尽可能少的定义全局标识; 在模块创建过程中避免污染全局变量的一种方法是使用一个对象作为命名空间('容器'); 为了保持干净的全局命名空间,将'容器'...
阅读全文
摘要:实例详解-类(二) // 给Object.prototype添加只读\不可枚举\不可配置的属性objectId(function(){ Object.defineProperty(Object.prototype,'objectId',{ get:idGetter, //读取objectId时直接调
阅读全文
摘要://实现枚举类型,扑克牌应用 function creatEnum(p){ //构造函数 var Enumeration = function(){throw 'can not Instantiate Enumerations';}; //重写原型并将原型赋值给变量proto var proto =
阅读全文
摘要:实例详解-类(一): //每个javascript函数(除了bind())都自动拥有一个prototype对象// 在未添加属性或重写prototype对象之前,它只包含唯一一个不可枚举属性constructor// constructor的值是一个函数对象,指代函数对象自身(构造函数)//原型对象
阅读全文
摘要://集合类Set( ES6标准才有的类,目前兼容性较差)//自定义集合类:extend = function (o,p){ //定义一个复制对象属性的类函数 for(var x in p){ o[x] = p[x]; } return o;};function Set(){ this.values
阅读全文
摘要:数组 数组中的每个元素的位置是索引,索引是基于32位的由0开始的数值,最大索引为(2的32次方-2),最大长度为(2的32次方-3) 数组是无类型的:元素可为任意类型;动态的:可根据需要自动增长、缩减,也可在声明时固定大小;可能是稀疏的:索引不一定是连续的,可有空缺,length为元素个数 var
阅读全文
摘要:函数实例 var p = { a:15, b:'5', f1:function(){ var self = this; console.log(self.a+self.b); f2(); function f2(){ console.log(self.a-self.b); } return self
阅读全文
摘要:表达式和语句 eval( ) 只有一个参数 参数非字符串时,直接返回这个参数; 参数为字符串时,它把字符串当成JavaScript代码进行编译,编译失败则抛出语法错误,编译成功则执行代码,并返回最后一条语句的值,若没有值则返回undefined eval()使用了调用它的变量的作用域环境 它接收的字
阅读全文
摘要:基础语法、类型、变量 非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1、用x != x ,当x为NaN时才返回true; 2、用isNaN(x) ,当x为NaN或非数字值时,返回true; 3、用isFinity(x),在x不是NaN、Infinity、-Infin
阅读全文