JavaScript知识点(下)

简介: JavaScript知识点

四.函数


1.定义函数


绝对值函数


定义方式一


function abs(x){
    if(x>=0){
        return x;
    }else{
         return -x;
      }
}


一旦执行到return代表函数结束,返回结果!


如果没有执行return,函数执行完也会返回结果,结果为undefined


定义方式二


var abs = function(x){
    if(x>=0){
          return x;
      }else{
          return -x;
      }
}
//function(x){......}  匿名函数,可以把结果赋值给abs通过abs可以调用函数


2.调用函数


  • js可以传递任意个参数,也可以不传递参数


  • 规避不参在参数问题


//手动抛出异常
var abs = function(x){
    if(typeof x!== 'number'){
        throw 'Not a Number'
    }
    if(x>=0){
          return x;
     }else{
          return -x;
     }
}


arguments


arguments是JS免费赠送的关键字;代表传递的所有参数是一个数组


var abs = function(x){
    console.log("x=>"+x)
    for(var i=0;i<arguments.length.i++){
        console.log(arguments[i]);
    }
    if(x>=0){
        return x;
    }else{
        return -x;
    }
}


  • 问题:arguments包含所有参数,不能排除已有参数


rest


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


function text(a,b,...rest){
    console.log("a=>"+a);
    console.log("b=>"+b);
    console.log(rest);
}
//rest参数只能写在最后面,必须用...标识


3.变量作用域


  • 在JS中,var定义变量实际是有作用域的。


  • 假设在函数体声明,则在函数体外不可以使用(非实现的话,可以研究一下闭包)


function add(){
   var x=1;
   x=x+1; 
}
x=x+2;  //Uncaught ReferenceError: x is not defined


  • 如果两个函数是用来相同的函数名,只要是在函数内部,就不冲突


function add(){
   var x=1;
   x=x+1; 
}
function add1(){
   var x=1;
   x=x+1; 
}


  • 内部函数可以访问外部函数的成员,反之不行


function add(){
    var x=1;
    fuction add1(){
        var y=x+1;  //2
    }
    var z=y+1;    //Uncaught ReferenceError: y is not defined
}


  • 养成规范:所有的变量定义都放在函数的头部,不要乱放,便于代码维护


全局函数


x=1;
function f(){
    console.log(x);
}
f();
console.log(x);


  • 全局对象window


var x='xxx';
alert(x);
alert(window.x);
//alert()这个函数本身也是一个window变量


规范


由于我们所有的变量都会绑定到我们的window上,如果不同的JS文件,使用了相同的全局变量,如何能够减少冲突


//唯一全局变量
var ChenStudy = {};
ChenStudy.name='chen';
ChenStudy.add = function(a,b){
    return a+b;
}


把自己的代码放入自己定义的空间名字中,降低全局命名冲突问题


jQuery


局部作用域 let


function abc(){
    for(var i=0;i<100;i++){
        console.log(i)
    }
    console.log(i+1);  //问题:i出了作用域还能够使用
}


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


function abc(){
    for(let i=0;i<100;i++){
        console.log(i)
    }
    console.log(i+1);  //Unacught ReferenceError: i is not defined
}


  • 建议使用let定义局部作用域


常量 const


const PI = '3.14';
console.log(PI);
//PI = '123';


4.方法


定义方法


  • 对象:属性和方法


var fangfa = {
    name: 'chenstudy',
    birth: 2000,
    //方法
    age:function(){
    var now = new Date().getFullYear();
    return now-this.birth;
    }
}
//属性
chenstudy.name
//方法,一定要带()
chenstudy.age()


this默认指向调用它的那个对象


apply


  • 在js中可以控制this指向


function  getAge(){
    var now = new Date().getFullYear();
    return now-this.birth;
    }
var fangfa = {
    name: 'chenstudy',
    birth: 2000,
    age: getAge
    };
    getAge.apply(fangfa,[]);


五.内部对象


标准对象


number,string,boolean,object,function,undefined


1.Date


基本使用


var now = new Date();  //Sun May 09 2021 17:09:00 GMT+0800 (中国标准时间)
now.getFullYear();  //年
now.getMonth();  //月  0—11
now.getDate();  //日
now.getDay();  //星期
now.getHours();  //时
now.getMinutes();  //分
now.getSeconds();  //秒
now.getTime();   //时间戳  全世界统一  从  1970-1-1 00:00:00  毫秒数
console.log(new Date(1620551340587))  //事件戳转事件


转换


now.toLocaleString()  //调用的是一个方法,不是一个属性
now.toGMTString()


2.JSON


json是什么


  • 早期,所有数据传输习惯使用XML文件!


  • JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式


  • 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。


  • 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
    在JS中一切皆对象,任何js支持的类型都可以用JSON表示


  • 对象用{}


  • 数组用[]


  • 键值对用key:value


JS对象和JSON字符串的转换


var user={
    name:"chenstudy",
    age:18,
    sex:"男"
}
var jsonUSer = JSON.stringify(user);//JS->JSON
var obj = JSON.parse('{"name":"chenstudy","age":18,"sex":"男"}')


JSON和JS对象的区别


var obj={name:"chenstudy",age:18,sex:"男"};
var json='{"name":"chenstudy","age":18,"sex":"男"}'


3.Ajax


  • 原生js写法 xhr异步请求


  • jQuey封装好的方法


  • axios请求


六.面向对象编程


1.对象和类


  • 类:模板


  • 对象:具体的实例


原型


var Student ={
    name="xiaoming",
    study:function(){
        console.log(this.name+"study")
    }
};
var chen = {
    name:"chen"
};
//原型
chen._proto_=Bird;


class继承


class关键字,在ES6引入的


class Student{
    constructor(name){
        this.name=name;
    }
    hello(){
        alert('hello');
    }
}
var chen = new student("chen");
chen.hello;


继承(本质:原型)


class midStudent extends Student{
    constructor(name,grade){
        super(name);
        this.grade =grade;
    }
    mygrade(){
        alert("hello,midStudent");
    }
}


原型链


七.操作BOM对象(重点)


window


window代表浏览器窗口


window.alert(1)
undefined
window.innerHeight
879
window.innerWidth
167
window.outerHeight
878
window.outerWidth
683


Navigator


Navigator封装了浏览器的信息


navigator.appName
"Netscape"
navigator.appVersion
"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
navigator.userAgent
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
navigator.platform
"Win32"


大多数情况,我们不会使用navigator对象


不建议使用这些属性


scree


代表屏幕尺寸


screen.width
1549 px
screen.height
872 px


location


location代表当前页面的URL信息


host: "www.baidu.com"
hostname: "www.baidu.com"
href: "https://www.baidu.com/"
protocol: "https:"
reload: ƒ reload()  //刷新网页
location.assign('https://i.cnblogs.com/posts/edit;postId=14736906')  //设置新的地址


document


document代表当前的页面,HTML DOM文档树


document.title
"百度一下,你就知道"
document.title="chenstudy"
"chenstudy"


获取具体的文档数节点


<dl id="ip">
    <dt>Java</dt>
    <dd>JavaSE</dd>
    <dd>JavaEE</dd>
</dl>
<script>
    var dl =document.getElementById('ip')
</script>


获取cookie


document.cookie
"BIDUPSID=8FFC189A44E65B4082968A90334BA305; PSTM=1610976142; BAIDUID=8FFC189A44E65B40E0850


  • 截取cookie:恶意人员获取你的cookie上传到它的服务器


  • 服务器端可以设置cookie为httpOnly


history


history:浏览器的历史记录


history.back()  //后退
history.forward  //前进


八.操作DOM对象(重点)


核心


DOM树形结构就是浏览器的网页


  • 更新:更新DOM节点


  • 删除:删除一个DOM节点


  • 遍历DOM节点:得到DOM节点


要操作DOM节点,就必须先获得这个DOM节点


获取节点


//原生代码,之后使用jQuery
<div id="father">
    <h1>标题</h1>
    <p id="p1">p1</p>
    <p class="p2">p2</p>
</div>
<script>
    var h1=document.getElementsByTagName('h1');
    var p1=document.getElementsById('p1');
    var p2=document.getElementsByClassName('p2');
    var father=document.getElementsById('father');
    //father.children;
    //father.firstChild;
    //father.lastChild;
</script>


更新节点


<div id="id1">
</div>
<script>
var id1= document.getElementById('id1');
</script>


操作文本


id1.innerText='456'//修改文本的值
id1.innerHTML='<strong>123<strong>';


操作css


id1.style.color = 'red';
id1.style.fontSize='18px';
id.style.margin = '10px';


删除节点


  • 删除节点的步骤:先获取父节点,再通过父节点删除自己


<div id="father">
    <h1>标题</h1>
    <p id="p1">p1</p>
    <p class="p2">p2</p>
</div>
//删除p1节点
<script>
    var self = document.getElementById('p1');
    var father = p1.parentElement;
    father.removechild(self)
</script>


  • 注意:删除节点是一个动态的过程,children时刻在变化!


father.removechild(father.children[0])
father.removechild(father.children[1])    //这里的children[1]是开始的children[2]


插入节点


  • 节点不存在元素时,可以通过innerHTML增加一个元素


  • 已经存在元素时,就不能这么干了,会产生覆盖


追加


  • 追加已存在的节点


<p id='js'>JavaScript</p>
<div id='lost'>
    <p id='SE'>JavaSE</p>
    <p id='EE'>JavaEE</p>
    <p id='ME'>JavaME</p>
</div>
<script>
    var js=document.getElementById('js');
    var lost = document.getElementById('lost');
    lost.appendChild(js);//追加已存在的节点
</script>


  • 追加一个新节点


<p id='js'>JavaScript</p>
<div id='lost'>
    <p id='SE'>JavaSE</p>
    <p id='EE'>JavaEE</p>
    <p id='ME'>JavaME</p>
</div>
<script>
    var js=document.getElementById('js');
    var lost = document.getElementById('lost');
    var newp = document.createElement('p');//创建一个p标签
    newp.id='newp';//为节点赋值一个id
    newp.innerText = 'hello,java';
    lost.appendChild(newp);//追加一个新节点
</script>


  • 设置样式


<p id='js'>JavaScript</p>
<div id='lost'>
    <p id='SE'>JavaSE</p>
    <p id='EE'>JavaEE</p>
    <p id='ME'>JavaME</p>
</div>
    <script>
          //创建一个标签节点
          var myScript = document.createElement('script');/创建一个空的script标签
          myScript.setAttribute('type','text/javascript');
          //创建style标签
          var myStyle = document.createElement('style');/创建一个空的style标签
          myStyle.setAttribute('type','text/css');
          myStyle.innerHTML = 'body{backgroud-color: white}';//设置标签内容
          doucment.getElementsByTagName('head')[0].appendChild(myStyle);  //将标签插入head中
    </script>


  • insert


list.insertBefore(js,ee);//将js节点插入到ee节点前
//选择的节点.insertBefore(newNode,targetNode)


九.操作表单(验证)


表单是什么


常见表单


  • 文本框 text


  • 下拉框


  • 单选框 radio


  • 多选框 checkbox


  • 隐藏框 hidden


  • 密码框 password



表单的目的:提交一些信息


表单的操作(获取提交的信息)


<form action="post">
    <p>
        <span>用户名:</span><input type="text" id="user_name">
    </p>
    <p>
        <span>性别:</span>
        <input type="radio" name="sex" value="man" id="boy">男
        <input type="radio" name="sex" value="women" id="girl">女
    </p>
</form>
<script>
    var input_text = document.getElementById('user_name');
    var boy_radio = document.getElementById('boy');
    var girl_radio =document.getElementById('girl');
    //修改输入框的值
    input_text.value ='chen'
    boy_radio.checked; //查看返回的结果,是否被选中
    boy_radio.checked = true ; //赋值
</script>


相关文章
|
9月前
|
JavaScript 前端开发 API
|
9月前
|
JavaScript 前端开发 CDN
总结 vue3 的一些知识点:Vue.js 安装
总结 vue3 的一些知识点:Vue.js 安装
|
9月前
|
JavaScript
总结 vue3 的一些知识点:​Vue.js 条件语句​
总结 vue3 的一些知识点:​Vue.js 条件语句​
|
3月前
|
自然语言处理 JavaScript 前端开发
[JS]知识点
本文介绍了JavaScript中的多个重要知识点,包括ES6、严格模式、类与对象、解构、跨域问题及入口函数等。文章通过详细示例和推荐的外部资源,帮助读者更好地理解和应用这些概念。内容持续更新中,适合初学者和进阶开发者参考。
37 2
[JS]知识点
|
3月前
|
JavaScript 前端开发 中间件
JS服务端技术—Node.js知识点
本文介绍了Node.js中的几个重要模块,包括NPM、Buffer、fs模块、path模块、express模块、http模块以及mysql模块。每部分不仅提供了基础概念,还推荐了相关博文供深入学习。特别强调了express模块的使用,包括响应相关函数、中间件、Router和请求体数据解析等内容。文章还讨论了静态资源无法访问的问题及其解决方案,并总结了一些通用设置。适合Node.js初学者参考学习。
60 1
|
3月前
|
存储 JavaScript 前端开发
JS的ES6知识点
【10月更文挑战第19天】这只是 ES6 的一些主要知识点,ES6 还带来了许多其他的特性和改进,这些特性使得 JavaScript 更加现代化和强大,为开发者提供了更多的便利和灵活性。
47 3
|
4月前
|
存储 JSON JavaScript
JS知识点
JS知识点
50 3
|
4月前
|
JavaScript 前端开发 Java
【javaScript数组,函数】的基础知识点
【javaScript数组,函数】的基础知识点
45 5
|
5月前
|
JavaScript 前端开发 Java
JavaScript 类知识点概览
概览JavaScript中类的知识点,包括类的定义和实现、添加方法和get/set方法、类的继承和静态方法的使用。通过学生类和人员类的例子,演示了类的构造器、方法定义、继承关系和静态方法的调用。
JavaScript 类知识点概览
|
4月前
|
前端开发 JavaScript
JavaScript 知识点总结
JavaScript 知识点总结
44 0

热门文章

最新文章