js入门小结(2)

自定义函数

function :      (提升代码的复用率)

1、封装代码(逻辑性)、功能模块封装
   参数:
      类型:可选参数、必选参数
      形参:封装函数过程中定义的参数
      实参:调用的时候传递的参数
    return 关键字;             
2、事件的方法体
3、构造函数:构建类、产生对象

// Object()
// 定义一个对象:字面量方式
var obj = {}; //json 对象  json 数组
console.log(obj)
// 实例化 object 构造函数(function)
var obj2 = new Object();
console.log(obj2)  // 取出对象的里面的元素
  // . 调用符
 


递归:函数自身调用自身(死循环)

成员:属性、方法

        属性: 描述外部特性

        方法: 描述对象的行为

自定义一个函数方法:

playGame:function(){
        console.log(" i can play。。。")
    },

es6 写法:

 test(){
        console.log("zzzzz")
    }

举个例子:自定义一个person(人)的具体信息

 var person = {
             // 属性
             //属性名:值
             name:"tom",
             sex:"男",
             type:"man",
             age:22,

             // 方法
             // 属性(方法)名:function(){}
             doing:function(){
                 //此时this 当前对象 == person
                 // 数据逻辑
                console.log(this.name)
                console.log(this.sex)
                console.log(this.age)
                this.eat()
                this.sleep()
                console.log("i can play lol...")
             },
             eat:function(){
                console.log("i like eatting...")
             },
             sleep:function(){
                console.log("i like sleepping...")
             }

         }

    //调用
        console.log(person)
        console.log(person.sex)
        console.log(person.age)
        person.eat() 
        person.sleep()
        console.log("-----")
        person.doing()

给函数添加属性和方法,举个例子

var phone = {
    
        
  }

//添加属性
    phone.much =7888;
    phone.color = "black";

//添加方法
     phone.call = function(){
       // this == phone
       console.log(this)
       console.log(this.color)
       console.log(" i can call everybody...")
   }  
   
//也可以
 phone.testFn = ()=>{
       that=phone;
     // 没有this 指向  
    //console.log(this) // window
       console.log(that.color)
       console.log("i am es6 function....")
   }

{ } json对象(存储数据):
[
    {sid:"32434",name:"ftrette",age:"22",sex:"男"},
     {...},
     {...}
]
 

遍历:
 

for(k in object){
        object[k]
}

举个例子:

  var dataList ={
            id:"1",
            size:"ipone13",
            price:"¥7688",
            color:"white",
            rom:"64G"
        }

    //遍历var

      for(k in dataList){
            console.log(k)
            // console.log(dataList.k)
            console.log(dataList[k])
        }  

还有另一种写法:


  var fn = ()=>{
           // ....
        }

例如:


        var fn1 =(a,b)=>a+b;
        var fn2 = a=>a*100;

        console.log(fn2(100))
    //同样可以输出

面向对象:是编程思路(将程序抽象成对象)

构造函数(类):构建对象(面向对象)

        js 构造函数的作用相当于 类,js底层没有class概念

(功能上来讲,构造函数和自定义函数没有太大区别,所以人为约束构造函数统一大驼峰命名)

封装:插件 类
        swiper()

        new swiper()

        Object() 

        String()

        Number()

        Array()

构建构造函数:

 function String(){

          }

举个例子:

function Person(name,age,sex){
          // 属性
          this.name=name;
          this.age =age;
          this.sex=sex 

          // 方法:
          this.eat=function(){}
          this.sleep=function(){}
      } 

//调用并输出
var obj = new Person("张三","22","男")
       obj.doing=function(){
           console.log("外卖")
       }
      var obj2 = new Person("李四","22","女")
      obj2.doing = function(){
          console.log("带货")
      }
      console.log(obj)
      console.log(obj2)

new 关键字:
new String()
【实例化】对象:
new 做了什么事情?
1、生成一个空对象(var obj={}) 
2、绑定构造函数、填充对应构造函数内置的属性方法
3、继承父类的属性、方法
4、执行构造函数,让对象具备实体属性与方法
var str="sfdsdf";(继承)
 

定时器


周期性定时器:没间隔多久执行一次
window.setInterval(function(){},时间)
window.setInterval('fn()',时间)
window.setInterval('fn()',1000)

一次性定时器:页面在加载完毕后的多久调用一次
window.setTimeout(function(){},时间);
window.setTimeout(fn,时间);
window.setInterval('fn()',1000)

定时器生成会返回一个定时器标识,用于清除定时器
var t1 = window.setInterval('fn()',1000)
var t2 = window.setTimeout('fn()',1000)
清除定时器:
clearInterval(id)
clearTimeout(id)


//如何让一次性定时器 实现周期性定时器的功能:


    function hello(){
        console.log("333333")
        setTimeout("hello()",3000)
    //    // 递归
    //     hello();
        
    }
    hello();

正则表达式

正则表达式就是匹配规则

正则表达式的组成:
模式修正符:模式匹配
g:全局匹配模式
i: 忽略大小写
m: 多行匹配模式

元字符(字符簇):          (匹配数据的类型)
\w  数字 字母 下划线
\W  非 数字 字母 下划线
\d  任意数字 0-9
\D  任意非数字 
\t  匹配水平制表符(tab键)
\n  匹配换行符
\s  空格
\S  非空格
.   匹配任意字符 出换行与结束符
A-z
1-9
[\u4e00-\u9fa5]   中文

字符匹配模式:
[ ]: 

 [abcd] 匹配a b c d 中的某个字符        例如: [qwer]就是匹配qwer 中的某个字符
 [0-9] == \d 匹配数字(1个)
 [a-z] 小写字母
 [A-Z] 大写字母
 [A-z] 大小写字母
( ):
  1、 整体
  2、(x|y) (memeda|heheda|xxxx)
{}: 匹配次数
  1、{m}    匹配指定的字符m次
  2、{m,n}   匹配指定的字符m到n次

量词:
+ 1到多次
* 0到多次
?0-1次
^ 以某个[原子]开头
$ 以某个[原子]结尾

特殊符号:
| 或者
\ 转义     /\/\+/

例如:


var patt = /\w{10}/     // 10位及以上(数字、字母、下划线)
var patt = /\w{10}$/    //10位(数字、字母、下划线)结尾
var patt = /\w{0,10}/   // (数字、字母、下划线)最少0 最多10
var patt = /\w{5,}/     //(数字、字母、下划线) 5位起步
var patt = /^\w{10}$/   //匹配 (包含数字 字母 下划线)必须是10位
   

正则替换

var str ="applepie";

 var newStr = str.replace("e","xxxx");
 console.log(newStr)

因为g是全局匹配,可以匹配到所有的e,所以也可以实现替换:

var str ="applepie";
var newstr = str.replace(/e/igm,"xxx");
 console.log(newstr)


DOM操作

js:
DOM:document 
BOM:window
DOM:document(文档) object model(模型)
作用:动态操作html文档的所有元素节点(写特效)
document对象:当前文档对象(html页面)

获取html元素节点的方法:
getElementById("id值")   以id属性获取元素 (一个)
getElementsByClassName("class值")   以class属性获取元素(批量)
getElementsByName("name值")   以name属性获取元素(批量)
getElementsTagByName("标签")   以标签名获取元素(批量)
querySelector("#xxx|.xxx|ul li")    以选择器来捕获元素 (一个)
querySelectorAll( )   以选择器来捕获元素 (多个元素)

如:

console.log(document)
 // 代理 html全部的节点 不包含doctype

非主流的获取方法:
form:
document.name
body:
document.body
document.head

标签(元素节点):
属性:
  attributes:全部属性(数组)
  元素内置属性(html属性): id class align name border src href ....
   Element.id 
   Element.className
   width="300"
   height="200"
   ...
  存在自定义属性: data-xx
   pNode.setAttribute("memeda","xxx")
   pNode.getAttribute("data-xxx")

// js 捕获元素
 var pNode = document.getElementById("p1");

 // 操作属性: 获取属性 设置属性
 console.log(pNode) // 节点对象
 console.log(pNode.className)
 console.log(pNode.id)
 console.log(pNode.dataXxx)  // 自定义属性
 // 设置属性
 pNode.align = "center"
 pNode.className ="ApplePie"

  console.log(pNode.attributes)
  pNode.setAttribute("memeda","xxx")
  var attr= pNode.getAttribute("data-xxx")
  console.log(attr)

样式:style=" "
    element.style.cssAttr ="值"
    //获取元素的style
    element.style.cssattr;

        设置样式,举个例子:

<body>
    <div class="item">11111</div>
    <div class="item">33333</div>
    <p class="item">222222</p>
    <a href="#" class="item">44444</a>

   
</body>

<script>
    var elementList = document.getElementsByClassName("item")
    elementList[0].style.border ="1px solid red"
    elementList[1].style.border ="1px solid red"
    elementList[2].style.border ="1px solid red"
    elementList[3].style.border ="1px solid red"
</script>

内容: <span>dsfdsfds</span>
   element.innerHTML
   element.innerText
表单元素:
    formElement.value
    formElement.value="xxxx"

渲染:节点操作(元素的增删改查)
     createElement("tagName") 创建元素节点
     createTextNode("text...") 创建一个文本节点
     appendChild(节点对象)   给元素追加子元素
     children 获取父元素的子节点 
     parentElement 子元素的父节点
     previousElementSibling 某个元素的上一个兄弟节点
     nextElementSibling  某个元素的下一个兄弟节点
     parent.removeChild(sonNode) 删除元素的子节点
     element.remove()   删除指定元素
     element.cloneNode(flase)  复制节点,flase 属性 true 
    father.hasChildNodes(node) 判断元素是否存在子节点
     father.insertBefore(newNode,h2); 在某个元素之前查询元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值