下面通过文字详解加代码分析的方式给大家分享下javascript设计模式之对象工厂函数与构造函数的相关知识。 概述使用对象字面量,或者向空对象中动态地添加新成员,是最简单易用的对象创建方法。然而,除了这两种常用的对象创建方式,JavaScript还提供了其他方法创建对象。1).使用工厂函数创建对象我们可以编写一个函数,此函数的功能就是创建对象,可将其.概述 使用对象字面量,或者向空对象中动态地添加新成员,是最简单易用的对象...
1.创建对象 代码如下: var person = new Object(); person.name = "RuiLiang"; person.age = 30; person.job = "Teacher"; person.sayName = function () { alert(this.name); }; person.sayName(); 2.工厂模式 缺点:不能识别对象 代码如下: function createPerson(name,age,job) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function () { alert(this.name); }; return o; } var person1 ...
本文所指TwoQueues缓存模型,是说数据在内存中的缓存模型。无论何种语言,都可能需要把一部分数据放在内存中,避免重复运算、读取。最常见的场景就是JQuery选择器,有些Dom元素的选取是非常耗时的,我们希望能把这些数据缓存起来,不必每次调用都去重新遍历Dom树。存就存吧,但总得有个量吧!总不能把所有的历史数据都放在内存中,毕竟目前内存的容量还是相当可怜的,就算内存够大,理论上每个线程分配的内存也是有限制的。那么问题...
近几个月来的工作是一个交易系统持续改进项目,迭代发布周期大约为2~3周。最近一次迭代是V16版,在礼拜三完成发布。不幸的是,第二天上午就被老大逮过去。原来老大从生产中揪出了一个bug,大致的问题如下: 系统中有一个常用的自定义控件,目的是协助选择客户,而V16版的持续改进需求是给控件增加两个筛选选项,支持不同的默认值配置。很简单的一个需求,代码修改也简单,其中一个修改是给一个js文件里边的一个函数增加了一个传入参...
var a=new Array(); 如果这样定义:a[3]="a"; alert(a.length) 4 而是的1, 如果定义了,但没有赋值则返回一个undefined (alert(a[0])) 创建数组: 代码如下: arr = [];//是的,一个空中括号 //与下面一句几乎是等价的 arr = new Array();var a=new Array(1,"n",3,"m",5,“m”,8); var a=[]; //定义一个空数组 var a=new Array(2); //定义一个长度为2的数组 var a=[2]; 定义一个初始值为2的数组 var a=[1,2,2,2,3,4,4,4]; 向...
javascript中window.document的属性、方法和事件的总结,有需要的朋友可参考一下本文章。 属性: Attributes 存储节点的属性列表(只读) childNodes 存储节点的子节点列表(只读) dataType 返回此节点的数据类型 Definition 以DTD或XML模式给出的节点的定义(只读) Doctype 指定文档类型节点(只读) documentElement 返回文档的根元素(可读写) firstChild 返回当前节点的第一个子节点(只读) Implementation 返回XMLDOMImplementation对象...
javascript Date.setDate()方法按照本地时间设置月份的某一天,在指定的日期。 语法Date.setDate( dayValue )下面是参数的详细信息:dayValue : 从1到31的整数,代表一个月份中某一天。返回值: NA例子: 下面的第二条语句从原来的值到8月24日的变化。JavaScript setDate Methodvar dt = new Date( "Aug 28, 2008 23:30:00" );dt.setDate( 24 );document.write( dt ); 这将产生以下结果:Sun Aug 24 23:30:00 UTC+0530 2008
在之前的介绍中,我们已经知道 Javascript 没有块级作用,只有函数级作用域。代码如下: function test() { // a scopefor(var i = 0; i < 10; i++) { // not a scope// count}console.log(i); // 10 }Javascript 中也没有显示的命名空间,这就意味着一切都定义在全局作用域中。每一次引用一个变量时,Javascript 会往上遍历整个全局作用域直到找到该变量。如果遍历完整个全局作用域仍然没有找到该变量,则抛出一个 ReferenceError ...
Math对象 Math对象是在高中数学课就学过的内置对象。它知道解决最复杂的数学问题的所有公式,如果给它要处理的数字,即能计算出结果。 Math对象有几个属性,主要是数学界的专用值。下表类出了这些属性:属 性说 明E值e,自然对数的底LN1010的自然对数LN22的自然对数LOG2E以2为底E的对数LOG10E以10为底E的对数PI值πSQRT1_21/2的平方根SQRT22的平方根 虽然这些值的意义与用法不在本书讨论范围内,但如果清楚它们是什么,在需要时...
举例如果在 d3 上点击鼠标,事件流是这样的: 捕获阶段 在 div1 处检测是否有 useCapture 为 true 的事件处理程序,若有,则执行该程序,然后再同样地处理 div2。 目标阶段 在 div3 处,发现 div3 就是鼠标点击的节点,所以这里为目标阶段,若有事件处理程序,则执行该程序,这里不论 useCapture 为 true 还是 false。 冒泡阶段 在 div2 处检测是否有 useCapture 为 false 的事件处理程序,若有,则执行该程序,然后再同样地处理 d...
null 和 undefined Undefined相当于一个变量并没有明确的被赋值(是否被赋值, 可能无心忽略, 逻辑问题) JS的怪异之处就在于undefined真的是一个可以使用的值。> var foo; > foo undefined同理,当缺失参数时 JavaScript 会分配一个 undefined:> function id(x) { return x } > id() undefineda = 1; a !== undefined // truea = undefined var b a === b //trueNull相当于变量被明确指定了没有值,而不是由于意外的原因被忽略掉了(...
因为 DOM 的存在,这使我们可以通过 JavaScript 来获取、创建、修改、或删除节点。 NOTE:下面提供的例子中的 element 均为元素节点。 获取节点 父子关系element.parentNode element.firstChild/element.lastChild element.childNodes/element.children兄弟关系element.previousSibling/element.nextSibling element.previousElementSibling/element.nextElementSibling通过节点直接的关系获取节点会导致代码维护性大大降低(节点之...
黄金守则第一条: js没有块级作用域(你可以自己闭包或其他方法实现),只有函数级作用域,函数外面的变量函数里面可以找到,函数里面的变量外面找不到。 first try:这是为什么呢??var a = 10; function aaa(){//step-4alert(a);//step-5->执行alert,此时只能找到外面的a=10故弹框10 } function bbb(){//step-2var a = 20;aaa();//step-3 } //定义了函数没啥用,调用才是真格的所以这里是step-1 bbb();//step-1其实原理大家都懂...
作为一个好的Restfull Api不仅在于service url的语义,可读性,幂等,正交,作为http状态码也很重要,一个好的Http Status Code给使用者一个很好的响应,比如200表示正常成功,201表示创建成功,409冲突,404资源不存在等等。所以在做一个基于node.js+mongodb+angularjs的demo时发现node.js express没有提供相应的辅助类,但是本人不喜欢将201,404这类毫无语言层次语义的东西到处充斥着,所以最后决定自己写一个,但是同时本人也很懒,...
JavaScript Boolean.toSource()方法返回表示对象的源代码的字符串。 注意:此方法不会在Internet Explorer中运行。 语法boolean.toSource()下面是参数的详细信息:NA返回值 返回表示对象的源代码的字符串。 例子:JavaScript toSource() Methodfunction book(title, publisher, price) {this.title = title;this.publisher = publisher;this.price = price; } var newBook = new book("Perl","Leo Inc",200); document.write(newB...