關于構建函數(shù)添加,移除,是否有 等返回值的問題 及 變量申明不用_下劃線的區(qū)別問題,求大神詳解
問1:hasclass為社么是return?不能用className =obj.className.match(new RegExp("(\\s|^)" + name + "(\\s|^)"));? 嗎?而其他2個都那么用的,見截圖
問2: var item = items[i];var itemtop = item.offsetTop();?? ? 我這里變量名沒用下劃線_item? 和 item 有區(qū)別嗎?好像聽說用下劃線是實例啥來著 ? ??? ??? ????
function hasclass(obj,name){
?? ??? ??? ?return obj.className.match(new RegExp("(\\s|^)" + name + "(\\s|^)"));
?? ??? ?}
?? ??? ?
?? ??? ?function removeclass(obj,name){
?? ??? ??? ?if(hasclass(obj,name)){
?? ??? ??? ??? ?var reg = new RegExp("(\\s|^)" +name + "(\\s|^)");
?? ??? ??? ??? ?obj.className =? obj.className.replace(reg, "");
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ??? ?function addclass(obj,name){
?? ??? ??? ?if(!hasclass(obj,name)){
?? ??? ??? ??? ?obj.className += " " + name;
?? ??? ??? ?}
?? ??? ?}
?? ????
2017-11-26
這里的hasClass是用來判斷元素是否有某個class的,只需要讀取需要的值即可。而后面兩個方法是用來操作(增加、刪除)class的,是需要操作DOM,需要改變值的,所以會有賦值操作。
變量的命名沒有特別的講究,可以有自己的風格。通常變量名前面加下劃線,表示這個變量是這個方法中的私有變量。