- 浏览: 19931 次
- 性别:
- 来自: 成都
最新评论
-
jingeying:
[list][*]引用ASFDASDFADS[/list]
javascript 原型函数 prototype 工作原理 -
windrainpy:
qqwswxdo 写道有个问题想请教下:object1.met ...
javascript 垃圾回收机制 -
qqwswxdo:
有个问题想请教下:object1.method1 = &quo ...
javascript 垃圾回收机制 -
mingliang_luo:
一般,推荐《javascript高级程序设计》的面向对象设计和 ...
由 OO 继承来谈谈 javascript 继承 -
指甲刀X:
学习鸟
由 OO 继承来谈谈 javascript 继承
文章列表
在大多数面向对象语言中,基本上的都支持继承,首先来宽泛的谈谈大多数 OO 语言的继承方式,之后具体到 javascript 来看看其继承有什么不同之处。
1. 实现继承:实现继承是指派生类(子类)继承了基类(父类)的所有属性和方法,并且有且只有一个基类。
优点是可以直接使用基类的所有属性和方法,缺点不言而喻,基类的一些不必要的方法也会被子类所继承。
比如:基类定义了果树类,里面有开花,结果等方法。派生类继承基类,但如果派生类的中的果树不会开花,只会结果(如:无花果),那么开花对子类就没用,但子类确实继承了基类开花的方法。
在设计模式中,我们更多强调的是面向接口的继承。上面的例子中,果树有 ...
Javascript 中的原型函数(prototype)的工作原理,在 javascript 中每次声明新函数的过程中,就会为其创建一个 prototype 的属性。在未加其他附带条件情况下,所有的 prototype 属性都会自动获取 constractor 属性,constructor 内包含一个指向 prototype 属性所属函数的指针(就是说 constructor 回指构造函数本身)。
举个例子来说,Fruit.prototype.constructor 指向 Fruit。并且可以通过这个构造函数,为其添加更多的属性和方法。
当调用构造函数创建一个新实例后,该实例内部包含一个指针 ...
在 Javascript 中,是没有重载的概念的。我们可以通过将函数名想像为指针的方法对其加以深入的理解(很好理解)。
下面的一个例子可以让大家很容易的明白 Javascript 中无重载的概念。
function addNum(s1){
return 100+s1;
}
function addNum(s2){
return 200+s2;
}
alert(addNum(1)); // 输出 201,实际上第二个函数覆盖了第一个函数。
看下面的变量声明函数法对上述概念的理解:
var addNum = func ...
在 javascript 中,数组的保存是采用栈的形式保存的,栈是一种后进先出的数据结构。首先我对数组的操作进行一下总结。
第一:声明数组
声明数组的方法其实很简单,有两种。
a> var arrayPluto = new Array(); //注意在这里省略 new 操作符,效果与不省略一样。
b> var arrayPluto = [] // 声明一个空的数组
var arrayPluto = ["red", "blue", "black"] // 声明 ...
经常使用 Javascript 的人会琢磨其垃圾收集机制,Javascript 并不像 C,C++ 那样需要开发者手动去清除垃圾,在编写 Javascript 程序是,开发者无需关心内存使用问题,所需内存分配以及无用内存(垃圾)的回收完全实现了自动管理。究其根源,主要是程序收集那些不再使用的变量,并且释放其占用的内存。因此,垃圾收集机制会按照固定时间间隔,周期性反复的执行这一操作。
举例来说,局部变量只存在于函数内部,程序会为局部变量在栈内存或堆内存中分配对应的存储空间,当函数运行结束,局部变量所占用的内存就没有存在的必要了,这时程序会释放局部变量所占用的内存供其他变量使用。这是程序最简单 ...
在javascript中,我们可能很少会去用到 Label 语句,但是熟练的应用 Label 语句,尤其是在嵌套循环中熟练应用 break, continue 与 Label 可以精确的返回到你想要的程序的位置。
Label 语句,按书本上说的语法是:
Label: statement
如: begin: for (var i = 0; i < 10 ; i++ ){
alert(i);
}
举一个比较典型的例子,看完后即明白 Label 的应用:(未 ...
Javascript 中的数值转换主要包含三类:Number(), parseInt() 以及 parseFloat()
具体针对每一个转换就不做具体分析了,大多数书上面都有,这里主要来区分三种数值转换的不同点:
1. Number() 在处理前导为零(例:070)的数值时,会 ...
1. 任何字符串的长度都可以通过 length 来取得
如 var text = "this is Pluto";
alert(text.length); // 输出 13
2. ECMAScript 中的字符串是不可改变的。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。
3. 数值转换为字符串: toString() 方法和 String() 方法。两者稍有不同。首先来看看 toString() 方法。
1. 几乎所有的值都有 toString( ...
ECMAScript 中的参数与其他大多数语言中函数的参数有所不同,向 ECMAScript 中传参可以为任意多个,并且ECMAScript 没有限制传入参数的数据类型。这样做的原因是 ECMAScript 中的参数在内部是用一个数组来表示的。函数接收到的始终是数组,而不去关心数组内有哪些参数。
调用参数时,可以通过 arguments 对象来访问参数数组。arguments[0] 代表第一个参数,arguments[1] 代表第二个参数。同时可以通过 arguments.length 来返回参数个数。
例如:
function fire ...
经常使用 Javascript 的人会琢磨其垃圾收集机制,Javascript 并不像 C,C++ 那样需要开发者手动去清除垃圾,在编写 Javascript 程序是,开发者无需关心内存使用问题,所需内存分配以及无用内存(垃圾)的回收完全实现了自动管理。 ...
Javascript 中 with 的用法并不常见,其主要作用是将代码的作用域指定到某一个特定的对象。
此话说起来比较空洞,下面用一个例子来阐述 with 语句的用法。
例:<body >
<input value="a ...