JavaScript学习_20220703

1、函数

 (1)定义函数

不存在参数如何规避

 1 <script>
 2     var abs = function (x) {
 3         if(typeof x !== "number"){
 4             throw 'Not a Number'; //手动抛出异常
 5         }else if(x>0){
 6             return x;
 7         }else{
 8             return -x;
 9         }
10     }
11 </script>
12 abs(10)//10
13 abs() // Uncaught Not a Number
14 abs('q')// Uncaught Not a Number
15 abs(-19)//19

存在多个参数如何规避

rest:ES6引入的新特性,获取除了已经定义的参数之外的所有参数  ...   

1 var qas = function (a,b,...rest) {
2     console.log('a=>'+a);
3     console.log('b=>'+b);
4     console.log(rest);
5 }
6 
7 qas(1,6) //a=>1  b=>6 []
8 qas(1,6,4,23,8)// a=>1 b=>6  (3) [4, 23, 8]

rest参数只能放在最后,必须用...标识 

(2)局部作用域let

1 function ab() {
2     for (var i = 0; i < 10; i++) {
3        console.log(i); // 0 1 2 3 4 5 6 7 8 9
4     }
5     console.log(i+1); //11
6 }

ES6 let关键字,解决局部作用域冲突的问题

1 function ab() {
2     for (let i = 0; i < 10; i++) {
3        console.log(i); // 0 1 2 3 4 5 6 7 8 9
4     }
5     console.log(i+1); //Uncaught ReferenceError
6 }

(3)常量关键字const

1 const PI = 3.13;
2 console.log(PI*2);
3 PI=2;   //定义失败

2. 方法

方法就是把函数放在对象的里面,对象(属性和方法)

1 var Student ={
2         name: '张三',
3         birthday: 1999,
4         age: function () {
5             var now = new Date().getFullYear();
6             return now - this.birthday;
7         }
8     }

Student.name //张三
Student.age()  //23 方法,一定要带()

//拆开
function getAge() {
var now = new Date().getFullYear();
return now - this.birthday;
}
var Student ={
name: '张三',
birthday: 1999,
age: getAge
}
Student.name   //张三
Student.age()  //23 方法,一定要带()
getAge() //NaN
在Java中this是无法指向的,默认指向调用它的那个对象。
而在JavaScript中可以控制this的指向(apply)
getAge.apply(Student,[]);//this指向了Student对象,参数为空   23

3. 对象

JSON一种轻量级的数据交换格式。

JavaScript中任何js支持的类型都可以用JSON表示

  • 对象、map都用 {};
  • 数组、list都用 [];
  • 所有的键值对都用 key:value
<   script >
        var user={
            name:"张三",
            age:21,
            sex:"男"
        }
        var json = JSON.stringify(user);    //对象转化为json字符串
        var jsonuser = JSON.parse('{"name":"张三","age":21,"sex":"男"}');  //json字符串转化为对象

面向对象编程

(1)定义一个类,属性和方法

class Student {
    constructor(va) {
        this.va = va;
    }
    Happy( ){
        alert(this.va+" very happy!");
    }
}
var a = new Student("张三");
var b = new Student("李四");
//console
a  //Student {va: '张三'}
a.Happy() //张三 very happy!

(2)继承

class pupil extends Student{
    constructor(name,grade) {
        super(name);
        this.name = name;
        this.grade = grade;
    }
   Happy() {
       super.Happy();
   }
   Grade(){
        alert("我是小学生");
   }
}
var pu = new pupil("小红",2);

4. 操作BOM对象

BOM:浏览器对象模型

location:代表当前页面的url信息

1. host:"www.baidu.com"  //主机
2. href:"http://www.baidu.com/" //当前指向的位置
3. protocol:"https:"  //协议
4. reload:f reload()  //刷新网页
5.location.assign('https://weibo.com/')  //设置新的地址

 document:代表当前的页面。

获取dom节点

<div id ="fa">
    <h1>这是一个标题</h1>
    <p id="ax">P1</p>
    <p class='ew' id="bx">p2</p>
</div>
<script>
    var h = document.getElementsByTagName('h1');
    var l = document.getElementById('ax');
    var x = document.getElementById('bx');
    var q = document.getElementsByClassName('ew');
    var fa = document.getElementById('fa');
    var ch = fa.children; //获取父节点下所有的子节点
</script>

更新节点

l.innerText="原生代码"; //修改文本的值
x.innerHTML='<strong>我变粗了</strong>'; //可以解析html文本标签
l.style.color = 'red'; //操作js 

删除节点

var self = document.getElementById('ax');
var father = self.parentElement;
father.removeChild(self);
//
father.removeChild(father.children[0]);

插入节点

追加:x.appendChild(y);

p id = 'i'>java</p>
<div id ="fa">
    <h1>这是一个标题</h1>
    <p id="ax">P1</p>
    <p class='ew' id="bx">p2</p>
</div>
<script>
    var ui = document.getElementById('i');
    var fa = document.getElementById('fa');
    fa.appendChild(ui);
</script>

创建新节点

var sa = document.createElement('sa');
sa.id = 'sa';
sa.innerText='我是新来的';
fa.appendChild(sa);

创建一个标签节点(通过setAttribute()属性可以设置任意的值)

var myscript = document.createElement('Script');
myscript.setAttribute('type','text/javascript');
fa.appendChild(myscript);

插入 list.insertBefore(newNode,targetNode);

5.操作表单(验证)

得到输入框的值:input_text.value

获取输入框的值:input_text.value='qwe'

md5加密

6.jQuery

jQuery库,里面存在大量的JavaScript函数

引入jQuery

<script src="../lib/jquery-3.6.0.js"></script>
公式  :$(selector).action() //$(选择器).事件
<div>
    <a href="" id="cl">点击</a>
</div>

<script>
    //选择器就是css中的选择器
    $('#cl').click(function () {
        alert("hello,jQuery!");
    })
</script>
//原生js
document.getElementsByTagName('div');
document.getElementById('id01');
document.getElementsByClassName('class01');
//jQuery 
$('div').click(); //标签选择器
$("#id01").click(); //id选择器
$('.class01').click();  //类选择器
//css中的选择器都可以使用
//  http://jquery.cuishifeng.cn/   查看选择器

 获取鼠标移动坐标

<!--获取鼠标当前的坐标-->
mouse:  <span id = 'mouseMove'></span>
<div id="divMove">
    在这里移动鼠标试试
</div>
<script>
    //当网页元素加载完毕之后相应事件
    $(document).ready(function () { //$(function () { 
        $('#divMove').mousemove(function (e) {
            $('#mouseMove').text('X:'+e.pageX+" Y:"+e.pageY);
        })
    })
</script>

 $("#id01").text()    //修改文本

$("#id01").html()    //修改html

 操作DOM

<ul id="test_ul">
    <li class="js">javascript</li>
    <li name = "python">python</li>
</ul>
<script>
    $('#test_ul li[name=python]').text(); //获取值
    $('#test_ul li[name=python]').text('C++'); //设置值
    $('#test_ul li[name=python]').css('color','red'); //操作css属性
    $('#test_ul li[name=python]').css({"color":"red","font-style":"oblique"});//多个CSS操作 
</script>
//$('#test_ul').html(); //节点操作
//$('#test_ul li[name=python]').show()//显示  hide()//显示  toggle()//显示和隐藏切换

 源码之家

posted @ 2022-07-03 18:09  浑浑噩噩一只小迷七  阅读(37)  评论(0)    收藏  举报