javascript知识
机智勇敢的放牛娃
这个作者很懒,什么都没留下…
展开
-
javascript 的 继承(四) 之 原型式继承
道格拉斯·克罗克福德在2006 年写了一篇文章,题为Prototypal Inheritance in JavaScript (JavaScript中的原型式继承)。在这篇文章中,他介绍了一种实现继承的方法,这种方法并没有使用严格意义上的构造函数。他的想法是借助原型可以基于已有的对象创建新对象,同时还不必因此创建自定义类型。为了达到这个目的,他给出了如下函数。function obje原创 2016-04-25 16:44:13 · 448 阅读 · 0 评论 -
javascript设计模式介绍(一) 工厂模式
创建对象虽然object构造函数或者对象字面量都可以创建单个对象,这种方式有着明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码。那么如何解决这个问题呢?工厂模式这种模式抽象了创建具体对象的过程,考虑到ECMAScript中无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节。function createPerson(name, age原创 2016-04-22 09:48:29 · 342 阅读 · 0 评论 -
javascript设计模式介绍(六)寄生构造函数模式
这种模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回新创建的对象;但从表面上看,这个函数又很像是典型的构造函数。下面是一个例子。function Person(name, age, job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayN原创 2016-04-22 11:42:53 · 522 阅读 · 0 评论 -
javascript设计模式介绍(七)稳妥构造函数模式
道格拉斯·克罗克福德(Douglas Crockford)发明了 JavaScript中的稳妥对象(durable objects)这个概念。所谓稳妥对象,指的是没有公共属性,而且其方法也不引用 this 的对象。稳妥对象最适合在一些安全的环境中(这些环境中会禁止使用 this 和 new),或者在防止数据被其他应用程序(如 Mashup程序)改动时使用。稳妥构造函数遵循与寄生构造函数类似的模式,原创 2016-04-22 11:49:54 · 747 阅读 · 0 评论 -
javascript 的 继承(一) 之 原型链继承
继承继承是 OO语言中的一个最为人津津乐道的概念。许多 OO语言都支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际的方法。如前所述,由于函数没有签名,在 ECMAScript中无法实现接口继承。ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的。1.原型链 ECMAScript中描述了原型链的概念,并将原型链作为实现原创 2016-04-22 11:55:38 · 4079 阅读 · 0 评论 -
javascript设计模式介绍(二) 构造函数模式
我们可以通过创建自定义的构造函数,从而定义自定义对象类型的属性和方法。例如:function Person(name.age,sex){this.name = name;this.age = age;this.sex = sex;this.sayName = function(){ alert(this.name); }}然后我们实例一个Personvar p原创 2016-04-22 09:53:45 · 293 阅读 · 0 评论 -
javascript 的 继承(三) 之 组合继承
组合继承(combination inheritance),有时候也叫做伪经典继承,指的是将原型链和借用构造函数的技术组合到一块,从而发挥二者之长的一种继承模式。其背后的思路是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样,既通过在原型上定义方法实现了函数复用,又能够保证每个实例都有它自己的属性。下面来看一个例子。function SuperType(原创 2016-04-22 21:32:10 · 317 阅读 · 0 评论 -
javascript 的 继承(二) 之 借用构造函数继承
在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术(有时候也叫做伪造对象或经典继承)。这种技术的基本思想相当简单,即在子类型构造函数的内部调用超类型构造函数。别忘了,函数只不过是在特定环境中执行代码的对象,因此通过使用apply()和call()方法也可以在(将来)新创建的对象上执行构造函数,如下所示:f原创 2016-04-22 21:23:30 · 547 阅读 · 0 评论 -
简要说一下CMD和AMD的区别
关于这两个的区别网上可以搜出一堆文章,简单总结一下最明显的区别就是在模块定义时对依赖的处理不同AMD推崇依赖前置,在定义模块的时候就要声明其依赖的模块CMD推崇就近依赖,只有在用到某个模块的时候再去require这种区别各有优劣,只是语法上的差距,而且requireJS和SeaJS都支持对方的写法AMD和CMD最大的区别是对依赖模块的执行时机处理不同,注意不是加载的原创 2016-07-25 11:54:41 · 1290 阅读 · 0 评论 -
javascript设计模式介绍(三) 原型模式
我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。如果按照字面意思来理解,那么 prototype 就是通过调用构造函数而创建的那个对象实例的原型对象。使用原型对象的好处是可以让所有对象实例共享它所包含的属性和方法。换句话说,不必在构造函数中定义对象实例的信息,而是可以将这些信息直接添加到原型原创 2016-04-22 10:25:30 · 2890 阅读 · 0 评论 -
javascript设计模式介绍(三) 原型模式 扩展知识
原型与 in 操作符有两种方式使用 in 操作符:单独使用和在for-in 循环中使用。在单独使用时,in 操作符会在通过对象能够访问给定属性时返回 true,无论该属性存在于实例中还是原型中。看一看下面的例子。functionPerson(){}Person.prototype.name= "Nicholas";Person.prototype.age= 29;P原创 2016-04-22 10:50:34 · 2727 阅读 · 0 评论 -
javascript 的 继承(五) 之 寄生式继承
寄生式(parasitic)继承是与原型式继承紧密相关的一种思路,并且同样也是由克罗克福德推而广之的。寄生式继承的思路与寄生构造函数和工厂模式类似,即创建一个仅用于封装继承过程的函数,该函数在内部以某种方式来增强对象,最后再像真地是它做了所有工作一样返回对象。以下代码示范了寄生式继承模式。function createAnother(original){ var clone原创 2016-04-25 16:50:50 · 400 阅读 · 0 评论 -
javascript 的 继承(六) 之 寄生组合式继承
前面说过,组合继承是JavaScript 最常用的继承模式;不过,它也有自己的不足。组合继承最大的问题就是无论什么情况下,都会调用两次超类型构造函数:一次是在创建子类型原型的时候,另一次是在子类型构造函数内部。没错,子类型最终会包含超类型对象的全部实例属性,但我们不得不在调用子类型构造函数时重写这些属性。再来看一看下面组合继承的例子。function SuperType(name)原创 2016-04-25 16:54:36 · 404 阅读 · 0 评论 -
前后端数据交互方法
前后端数据交互方法在此介绍几种常用的前后端数据交互方法,并给出使用建议。以提高前后端协同开发的效率。此文章适合前后端协同开发经验不足的新手阅读。目录:HTML赋值JS赋值script填充JSONAJAX获取JSONWebSocket实时传输数据总结HTML赋值输出到 Element 的 value 或 data-nameinput t转载 2016-05-15 15:10:57 · 2941 阅读 · 0 评论 -
利用a标签自动解析URL
原文出自:http://www.cnblogs.com/Wayou/p/things_you_dont_know_about_frontend.html很多时候我们有从一个URL中提取域名,查询关键字,变量参数值等的需要,而万万没想到可以让浏览器方便地帮我们完成这一任务而不用我们写正则去抓取。方法就在JS代码里先创建一个a标签然后将需要解析的URL赋值给a的href属性,然后就得到了一切我转载 2016-05-16 20:31:28 · 843 阅读 · 0 评论 -
12个非常实用的JavaScript小技巧
原文转自:http://www.codeceo.com/article/12-useful-javascript-tips.html在这篇文章中将给大家分享12个有关于JavaScript的小技巧。这些小技巧可能在你的实际工作中或许能帮助你解决一些问题。使用!!操作符转换布尔值有时候我们需要对一个变量查检其是否存在或者检查值是否有一个有效值,如果存在就返回true值。为了做转载 2016-05-17 13:31:05 · 329 阅读 · 0 评论 -
了解无阻塞加载javascript脚本技术
偶然间看到这样一篇博客,内容很详细,概念解释的也很通俗,转过来与大家分享一下,学习学习。原文转自:http://ghdcblog.cn/article/%E4%BA%86%E8%A7%A3%E6%97%A0%E9%98%BB%E5%A1%9E%E5%8A%A0%E8%BD%BDjavascript%E8%84%9A%E6%9C%AC%E6%8A%80%E6%9C%AF#浏览器里 的http转载 2016-05-17 14:44:34 · 2010 阅读 · 0 评论 -
javascript设计模式介绍(四)组合使用构造函数模式和原型模式
创建自定义类型的最常见方式,就是组合使用构造函数模式与原型模式。构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。结果,每个实例都会有自己的一份实例属性的副本,但同时又共享着对方法的引用,最大限度地节省了内存。另外,这种混成模式还支持向构造函数传递参数;可谓是集两种模式之长。下面的代码重写了前面的例子。functionPerson(name, age, job){原创 2016-04-22 11:23:35 · 1063 阅读 · 0 评论 -
javascript设计模式介绍(五)动态原型模式
有其他 OO语言经验的开发人员在看到独立的构造函数和原型时,很可能会感到非常困惑。动态原型模式正是致力于解决这个问题的一个方案,它把所有信息都封装在了构造函数中,而通过在构造函数中初始化原型(仅在必要的情况下),又保持了同时使用构造函数和原型的优点。换句话说,可以通过检查某个应该存在的方法是否有效,来决定是否需要初始化原型。来看一个例子。function Person(name,原创 2016-04-22 11:27:18 · 560 阅读 · 0 评论 -
利用函数节流来提升性能
原文转自:http://www.cnblogs.com/dolphinX/p/3403821.html最近在做网页的时候有个需求,就是浏览器窗口改变的时候需要改一些页面元素大小,于是乎很自然的想到了window的resize事件,于是乎我是这么写的DOCTYPE html>html>head> title>Throttletitle>head>body>转载 2016-07-25 12:16:21 · 818 阅读 · 0 评论