2016-07-31 曹强
原型链继承 让构造函数的原型对象等于另一个类型的实例,利用原型让一个引用类型继承另一个引用类型的属性和方法 ``` function SuperType() { this.property=true; } SuperType.prototype.getSuperValue=function(){ return this.property; }; function SubType() { this.subProperty=false; } //继承SuperType SubType.prototype=new SuperType(); SubType.prototype.getSubValue=f 继续阅读 »
2016-08-03 曹强
引用类型 Object类 ```text ECMAScript中的所有类都是由Object类继承而来。 Object类具有下列属性: Constructor:对创建对象的函数的引用(指针),对于Object类,该指针指向原始的Object()函数 Prototype:对该对象的对象原型的引用。 Object类还有几个方法: 1、PropertyIsEnumerable(property):判断给定的属性是否可以用for...in语句进行枚举 2、ToString():返回对象的原始字符串表示。 3、ValueOf():返回最适合该对象的原始值。对于许多类,该方法返回的值都与toString()的返回值相同。 继续阅读 »
2016-07-29 曹强
定义函数有两种方式:函数声明和函数表达式。它们之间一个重要的区别是函数提升。 1.函数声明会进行函数提升,所以函数调用在函数声明之前也不会报错: ``` test(); function test(){ alert(1); } ``` 2.函数表达式不会进行函数提升,函数调用在函数声明之前的话会报错: ``` test(); // test is not a function var test=function(){ alert(1); } ``` 递归函数是通过在函数内部调用自身实现的。 直接使用函数名进行递归调用 ``` function f(num){ if(num==1){ r 继续阅读 »
2016-08-30 曹强
写在前面 废话不多说,请看下面3道题,把6个console.log()的答案写下来,然后对照着在Console控制台里敲一遍,校验一下结果。 more 代码片段 ``` var A = function() {}; a.prototype = { num : 1, text : 'aaa' }; var x = new A(); // 第一题 console.log(x.num); console.log(x.text); // --这里是分割线-- var y = new A(); A.prototype = { num : 2 }; // 第二题 console.log(y.num); c 继续阅读 »
2016-07-30 曹强
创建对象 工厂模式 工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题 缺点:没有解决对象识别问题,所有对象都仅是Object的实例 ``` 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=createPerson("Jack",29,"Engineer"); //检测对象类型 继续阅读 »
2014-03-22 W.Y.
童鞋们,请准备好迎接 Web 开发历史上一个重大时刻。。。 [鼓声响起] JavaScript 有了原生的 Promise! [漫天的烟花绽放,人群沸腾了] 这时候你大概是这三种人之一: - 你的身边拥挤着欢呼的人群,但是你却不在其中,甚至你还不大清楚“Promise”是什么。你耸耸肩,烟花的碎屑在你的身边落下。不过不要担心,我也是花了多年的时间才明白 Promise 的意义,你可以从这里开始。 - 你一挥拳!太赞了对么!你已经用过一些 Promise 的库,但是所有这些第三方实现在 API 上都略有差异,JavaScript 官方的 API 会是什么样子?请看这里! - 你早就知道了,看着那些欢呼雀跃的新人你的嘴角泛起一丝 继续阅读 »
2016-09-10 曹强
前言 在对Module模式有个熟悉的了解之后,我们来认识一个稍有改进的版本——ChristianHeilmann的Revealing Module模式。 模式的由来 原来的Module模式可能无法实现这样的需求: 当我们从另一个方法调用一个公有方法或者访问公有变量时,必须要重复主对象的名称。而且使用Module时必须要切换到对象字面量表示法来让某种方法变成公有方法。 我们需要的可能是这样的一个模式: 能够在私有范围内简单定义所有的函数和变量,并返回一个匿名对象,它拥有指向私有函数的指针,该函数是它希望展示为公有的方法。 有点拗口,还是上代码吧 (☆_☆) more 代码 ``` var myRevealingModu 继续阅读 »
2016-06-10 浩阳
content {:toc} 记录一下阅读蝴蝶书的笔记,本篇为书中最后一部分:方法、代码风格、优美的特性、毒瘤、糟粕等。 方法 这一章主要介绍了一些方法集。这里写几个我不太熟悉的方法和要点吧。 array.join() 继续阅读 »
2016-08-02 曹强
原始类型 text ECMAScript有5种原始类型(primitive type),即Undefined、Null、Boolean、Number和String。ECMAScript提供了typeof来判断值的类型。 typeof运算符 var sTemp="test string"; alert(typeof sTemp);//outpus "string" alert(typeof 95);//outpus "number" text typeof运算符返回值只有5种,分别为:如果变量是Undefined型返回"undefined",如果变量是Boolean型返回"boolean",如果变量是Number型返回"n 继续阅读 »
2015-06-05 Lim Geng
小函数蕴含着大学问:函数节流之水龙头与弹簧、尾递归优化、展开参数函数、异步化函数等,整理了几个有趣的js函数,后续还会增加。 函数节流:水龙头与弹簧 什么是节流,请自行百谷 Throttle:这种方式是类似水龙头,当水滴足够大时水滴就会掉下来;类似的,当时间超过某个timeout的时候就执行函数 ```js var throttle = function(fn, timeout) { var last = new Date().getTimes(); return function() { var curr = new Date().getTimes(); if (curr - last >= 继续阅读 »