//为对象添加 class 属性值
addClassName: function(element, className) {
element = $(element);
Element.removeClassName(element, className);
element.className += ' ' + className;
},
//为对象移除 class 属性值
removeClassName: function(element, className) {
element = $(element);
if (!element)
return;
var newClassName = '';
var a = element.className.split(' ');
for (var i = 0; i < a.length; i++) {
if (a[i] != className) {
if (i > 0)
newClassName += ' ';
newClassName += a[i];
}
}
element.className = newClassName;
},
因为addClassName
依赖于removeClassName()
,所以先分析后者,$()
是先将元素封装成prototype
对象,
if(!element) return
这句的意思就是如果元素对象不存在,则忽略不再继续执行的意思,也就是终止的意思。
split() 方法用于把一个字符串分割成字符串数组。
如果把空字符串 (""
) 用作 分隔符,那么 该对象 中的每个字符之间都会被分割。
判断是否拥有 class 属性值
//是否拥有 class 属性值
hasClassName: function(element, className) {
element = $(element);
if (!element)
return;
var a = element.className.split(' ');
for (var i = 0; i < a.length; i++) {
if (a[i] == className)
return true;//返回正确的处理结果
}
return false;//返回错误的处理结果
},
兼容旧版本浏览器增加Array的push方法
/**
* 为兼容旧版本的浏览器增加 Array 的 push 方法。
*/
if (!Array.prototype.push) {
Array.prototype.push = function() {
var startLength = this.length;//this指代Array
for (var i = 0; i < arguments.length; i++)
this[startLength + i] = arguments[i];//this依旧指代Array
return this.length;
}
}
!Array.prototype.push
如果为true
,说明浏览器不支持该方法,则往下执行。this[startLength + i] = arguments[i]
将传递进来的每个参数依次放入数组中,最后返回数组的长度
访问对象可以使用(.)
表示法,也可以使用[]
来访问,同样访问数组元素也是
转载请注明:苏demo的别样人生 » prototype.js源码