javascript

函数

  • 函数的参数如果是原始类型数据,数值,字符串,布尔值。传值操作。
  • 函数的参数是复合类型的数据,函数,对象,传址操作。
  • 同名参数:
function f(a, a) {
  console.log(a);
}

f(1, 2) // 2
  • arguments对象包含了函数运行时的所有参数,arguments[0]就是第一个参数,arguments[1]就是第二个参数,以此类推。这个对象只有在函数体内部,才可以使用。
  • arguments是对象,转化为数组的方法如下:
var args = [ ] ;
for (var i = 0; i<arguments.length; i++) {
		args.push(arguments[i];
		}
  • IIFE 立即执行的函数表达式 :作用:避免污染全局变量
  • 数组
 var arrs = "songjianjiang";
// var arr = [1, 3, 4, 5];
// arr.p = "test";
// 数组是特殊的对象,返归的键是0开始的有序整数
// 对于数值的键名,不能使用点结构。
// length属性是可写的。如果人为设置一个小于当前成员个数的值,该数组的成员会自动减少到length设置的值。
// arr.length = 0; //清除数组可以使他的length为0;
// console.log (Object.keys(arr));
// // 数组的遍历
// 第一种,使用for in 遍历。缺点会遍历出非整数键的值;加了IIFE
// (function () {for (var i  in arr) {
//     console.log (i);
// }}());
// 第二种使用foreach
// arr.forEach(function (value){
//   console.log (value)
// } );
// 类似数组的对象
var arr = Array.prototype.slice.call(arrs);
arr.forEach(function (chr) {
  console.log(chr);
});

数组去重

 //数组去重
     var arr = [undefined,undefined,'song','song','zhu','zhu',22,22,1,1,33,33];
     Array.prototype.removeDul = function () {
         var obj = {};
         var arr = [];
         for (var i = 0; i<this.length;i++) {
            if(!obj[this[i]]) {
                obj[this[i]] = "song";
                arr.push(this[i]);

            }
         }
         
         return arr;

     }

立即执行函数与闭包应用

function test() {
      var arr = [];
      for (var i =0; i<10; i++) {

        (function (j) {
            arr[j] = function () {
              console.log(j);
            }
        }(i));
        }
    
      return arr;
  }
  var temp = test();
  for (var j = 0; j<temp.length; j++) {
      temp[j]();
  }    

类数组

  var arr = {
       0 : 's',
       1 : 'o',
       2 : 'n',
       length : 3,
       push : function (a) {
           this[this.length]=a;
           this.length++;
       },
       splice : Array.prototype.splice
   }

返回元素标签 的第n层父级元素

 # 返回元素标签 的第n层父级元素
var div = document.getElementsByTagName('div')[0];
//getElementsByTagName定义在Document和Element.prototype上
  var i = div.getElementsByTagName('i')[0];
  function retParent(elem,n) {  
      while (elem && n) {
        elem = elem.parentElement;
        n--;
      }
      return elem;
       
  }

返回元素节点的孩子元素节点

var div = document.getElementsByTagName('div')[0];
    // 返回元素节点的孩子元素节点
    Element.prototype.myChild = function () {
        var arr = [];
        var len = this.childNodes.length;
        var child = this.childNodes;
        for (var i = 0; i < len; i++) {
            if (child[i].nodeType == 1) {
                arr.push(child[i]);
            }
            
        }
        return arr;
    }

insertAfter函数的封装

  //insertAfter函数的封装
        var div = document.getElementsByTagName('div')[0];
        var p = document.getElementsByTagName('p')[0];
        var span = document.createElement('span');
      
   Element.prototype.insertAfter = function (elem,htmlElem) {
    var nextNode = htmlElem.nextElementSibling;
        if (nextNode == null) {
            this.appendChild(elem);
        }else {
            this.insertBefore(elem,nextNode);
        }
       
   }

继承模式之圣杯模式

 //圣杯模式(继承)
  Father.prototype.name = "songjianjiang";
  function Father() {

  }
  function Son() {

  }

  var inherit = (function () {
    function F() {}
    return function (target,origin) {
        F.prototype = origin.prototype;
        target.prototype=F.prototype;
        target.prototype.constructor = target;
        target.prototype.uber = origin.prototype;
    }
  }());
  inherit(Son,Father);
  var son = new Son();

计数器例子

  // 计数器
    var minutes = document.getElementsByTagName('input')[0];
    var seconds = document.getElementsByTagName('input')[1];
    var button = document.getElementsByTagName('button')[0];


    
    var timer = setInterval(function () {
        seconds.value ++;
        if (seconds.value == 60) {
          seconds.value = 0;
          minutes.value++;
        }
       button.function () {
         clearInterval(timer);
         button.style.backgroundColor = 'skyblue';
       }; 
    },100);

在这里插入图片描述

事件冒泡和事件源对象

 //利用事件冒泡和事件源对象实现
   var ul = document.getElementsByTagName('ul')[0];
   ul.addEventListener('click',function (e){
     var event = e || window.event;
     var target = event.target || event.srcElement; 
    console.log(target.innerText);
   },false);
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值