-
重复符: x*:重复0或多次x,贪婪 x+:重复1或多次x,贪婪 x*?和x+?:分别同x*和x+,非贪婪 x?:重复0~1次 x/y:x或者y x{n}:重复n次x x{n,m}:重复n~m次x,省略m表示重复大于等于n次 【贪婪:匹配尽可能多次,有5个x就绝不只匹配4个; 非贪婪:匹配尽可能少次】查看全部
-
分组符: (...):分组,并记录匹配到的字符 (?:...):分组,但不记录 \<n>:重复<n>次前面的分组查看全部
-
正则范围符号: [...]:...范围内的任一字符 [^...]:不在...范围内的任一字符 ^:开头字符 $:末尾字符 \b:零宽单词边界;反义为\B查看全部
-
正则表达式: /匹配符/ new RegExp(/匹配符/) 基础正则符: .:除换行符以外的任意字符 \d:数字,相当于[0-9];反义为\D \w:数字和字母,相当于[0-9a-zA-Z];反义为\W \s:空白符;反义为\S \:转移字符查看全部
-
Json.parse('{"x":1}')查看全部
-
实例——探测器: !function(global){ // 基类 function Base(configs){ if(!(this instanceof Base)) throw new Error("需要用new调用"); this.configs = configs; this.analyze(); } Base.prototype.detect = function(){throw new Error("抽象方法");}; Base.prototype.analyze = function(){...}; // 具体类 function Link(links){ if(!(this instanceof Link)) throw new Error("..."); this.links = links; Base.apply(this, arguments); } // 先继承,再拓展,防覆盖 Link.prototype = Object.create(Base.prototype); Link.prototype.contructor = Link; Link.prototype.detect = function(){...}; //冻结方法,防止被改变,ES5 Object.freeze(Base); Object.freeze(Base.prototype); Object.freeze(Link); Object.freeze(Link.prototype); // 暴露到外层global Object.defineProperties(global,{ Link: {value: Link}, Base: {value: Base} }); }(this)查看全部
-
call() 改变当前作用域查看全部
-
关于_proto_查看全部
-
模块化方案: 1、对象(暴露所有模块成员) var mod = { n: 0, f: function(){...} }; 2、立即执行函数(无法访问未return的私有变量) var mod = (function(){ var _n = 0; var f = function(){...}; return {n:_n, f:f}; })(); 3、函数实例(同上) var mod = new function(){ var _n = 0; var f = function(){...}; this.n = _n; this.f = f; };查看全部
-
简单的抽象类: // 定义一个抽象类及其方法 function AbstractClass(){ throw new Error("!"); // 抽象类不可直接调用 } AbstractClass.aaa = function(){...} AbstractClass.bbb = function(){...} // 定义一个具体类,继承抽象类。可另外定义其方法 function Cls(){} Cls.prototype = Object.create(AbstractClass.prototype); Cls.prototype.contructor = Cls;查看全部
-
简单的链式调用: function A(){} A.prototype.add = function(s){ console.log(s); return this; // 返回A的实例,实现链式调用 }查看全部
-
调用基类方法: function A(name) { this.name = name; } A.prototype.mm = function(){}; function B(age) { this.age = age; A.call(this, name); // 调用基类的方法或属性 } B.prototype.mm = function(){ A.prototype.mm.apply(this, arguments); // 调用基类的原型方法或属性 …… }查看全部
-
简单的模拟重载: function a(){ var args = arguments; if(typeof args[0] === "object" && args[0]){ // 对象类型 if(args[0].name) this.name = args[0].name; if(args[0].age) this.age = args[0].age; } else{ // 基本类型 if(args[0]) this.name = args[0]; if(args[1].age) this.age = args[1]; } } // 重载a的toString方法 a.prototype.toString() = function(){ return "name=" + this.name + ",age=" + this.age; };查看全部
-
<value> instanceof <Type>: 可识别所有对象类型,不识别原始类型。 基于原型链。 不同window或iframe之间不能用instanceof来检测类型。查看全部
-
JavaScript数据类型:number、string、Boolean、null、undefined、object对象(Function、Aarray、Date...)查看全部
举报
0/150
提交
取消