易截截图软件、单文件、免安装、纯绿色、仅160KB

javascript 的lastIndexOf

近日收集上万行代码,整理一些出来。
//V8引擎的实现
function ToInteger( n ) {
n = Number( n );
var sign = ( n < 0 ) ? -1 : 1;
if ( n != n ) {
return 0;
}
if ( Math.abs( n ) == 0 || Math.abs( n ) == Number.POSITIVE_INFINITY ) {
return n;
}
return ( sign * Math.floor(Math.abs(n)) );
};
function lastIndexOf= (array,element, index) {
var length = array.length;
if (index == null) {
index = length - 1;
} else {
index = ToInteger(index);
// If index is negative, index from end of the array.
if (index < 0) index = length + index;
// If index is still negative, do not search the array.
if (index < 0) index = -1;
else if (index >= length) index = length - 1;
}
// Lookup through the array.
for (var i = index; i >= 0; i--) {
var current = array[i];
if ((current !== undefined) || i in this) {
if (current === element) return i;
}
}
return -1;
}
一个重大的误区是以为原生API都用C语言实现,其实不然,比如火狐与chrome等以速度著称的浏览器,基本的部分用C语言实现后,其他请高手搞定。毕竟用其他语言来模拟javascript很容易犯错,比如IE6。忘了,那东西是叫JScript。
//Base2的实现
function lastIndexOf(array, item, fromIndex) {
var length = array.length;
if (fromIndex == null) {
fromIndex = length - 1;
} else if (fromIndex < 0) {
fromIndex = Math.max(0, length + fromIndex);
}
for (var i = fromIndex; i >= 0; i--) {
if (array[i] === item) return i;
}
return -1;
}
//Prototype1.61的实现
function lastIndexOf(array,item, i) {
i = isNaN(i) ? array.length : (i < 0 ? array.length + i : i) + 1;
var n = array.slice(0, i).reverse().indexOf(item);
return (n < 0) ? n : i - n - 1;


相关文档:

JavaScript比较两个数组相等

javascript是不能直接比较两个数组是否相等的。例如:
var a = [1,2,3];
var b = [1,2,3];
alert(a == b);     // false
结果是 false. 证明两个数组不能直接比较相等。
解决方法一:
先排序,再利用toString方法,比较。例如:
var a = [1,2,3];
var b = [1,2,3];
alert(a.sort().toString() ......

javascript实现日历功能

黄色部分为date.js
<script type="text/javascript" src="/js/date.js"></script>
<input name="date" type="text" id="date" onBlur="checkDay(this)" style="width:160px;" /><INPUT class="button" style="WIDTH: 64px; HEIGHT: 24px" onClick="setday(this,date)"type="button" value="选择日期 ......

javascript面向对象编程

封装:通过闭包才算的上是真正意义上的封装
<script type="text/javascript">
  function myInfo(){
    var name ="老鱼",age =27;
    var myInfo = "my name is" + name + "i am" + age  ......

JavaScript运算符详解

       1、javascript具有下列种类的运算符:算术运算符;等同运算符与全同运算符;比较运算符;
  2、目的分类:字符串运算符;逻辑运算符;逐位运算符;赋值运算符;
  3、特殊运算符:条件运算符;typeof运算符;创建对象运算符new;delete运算符;void运算符号;逗号运算符;
  算术运算符: ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号