【JavaWeb03】 入门JavaScript:轻松掌握前端开发核心技能

06-02 1210阅读

【JavaWeb03】 入门JavaScript:轻松掌握前端开发核心技能

文章目录

    • 🌍一. JavaScript
      • 1. 基本说明
      • 2. JavaScript 特点!
      • 3. JavaScript 快速入门
      • 🌍二. js变量
        • 1. 变量的声明
        • 2. 示例
        • 3. 变量的命名规则
        • 4. 变量的类型
        • 5. 变量的作用域
        • 6. 变量的提升
        • 🌍三. 数据类型
          • 1. 基本数据类型(Primitive Types)
          • 2. 引用数据类型(Reference Types)
          • 3. 类型检测
          • 🌍四. 运算符
            • 1. 算术运算符
            • 2. 赋值运算符
            • 3. 关系运算符
            • 4. 逻辑运算符
            • 🌍 五. 数组
              • 1. 数组定义
              • 2. 数组使用和遍历
              • 🌍六. js函数
                • 1. 函数定义方式
                • 2. JavaScript 函数注意事项和细节
                • 🌍七. 事件
                  • onload 加载完成事件
                  • onclick 单击事件
                  • onblur 失去焦点事件
                  • o nchange 内容发生改变事件
                  • onsubmit 表单提交事件!
                  • 🌍八. 习题

                    🙋‍♂️ 作者:@whisperrr.🙋‍♂️

                    👀 专栏:JavaWeb👀

                    💥 标题:【JavaWeb03】 入门JavaScript:轻松掌握前端开发核心技能💥

                    ❣️ 寄语:比较是偷走幸福的小偷❣️

                    🌍一. JavaScript

                    1. 基本说明

                    1. JavaScript 能改变 HTML 内容,能改变 HTML 属性,能改变 HTML 样式 (CSS),能完成页面的数据验证
                    2. JS 需要运行浏览器来解析执行 JavaScript 代码。
                    3. JS 是 Netscape 网景公司的产品,最早取名为 LiveScript,后更名为JavaScript。和 Java 没有关系
                    4. JavaScript 简写 JS

                      【JavaWeb03】 入门JavaScript:轻松掌握前端开发核心技能

                    2. JavaScript 特点!

                    1.JavaScript 是一种解释型的脚本语言,C、C++等语言先编译后执行,而 JavaScript 是在程序的运行过程中逐行进行解释。

                    2.JavaScript 是一种基于对象的脚本语言,可以创建对象,也能使用现有的对象(有对象)。

                    3.JavaScript 是弱类型的,对变量的数据类型不做严格的要求,变量的数据类型在运行过程可以变化。

                    4.跨平台性(只要是可以解释 JS 的浏览器都可以执行,和平台无关)

                    创建 js 弱类型.html演示弱类型特点

                    1.js 代码可以写在 script 标签中

                    2. type=“text/javascript” 表示这个脚本(script)类型是 javascript

                    3. type=“text/javascript” 可以不写,但是建议写上

                    4. js 语句可以不写 ; 建议写上

                    5. var

                    输出 alert() 使用弹框方式

                    输出 console.log() 在调试输出

                    输出变量的类型 typeof, 输出变量的类型

                    
                    
                    
                    
                    JavaScript 是弱类型的
                    
                    num = 1;
                    alert("num=" + num);
                    alert("num 数据类型=" + (typeof num));
                    num = "csdn";
                    alert("num=" + num);
                    alert("num 数据类型=" + (typeof num));
                    
                    
                    
                    
                    
                    

                    3. JavaScript 快速入门

                    JavaScript 可以以多种方式使用,以下是两种主要的使用方式:

                    使用方式 1:script 标签 写 JS 代码

                    
                    
                    
                    script 标签中 写 JS 代码
                    
                    window.alert("hello, Javascript");
                    
                    
                    
                    
                    // alert 是 JavaScript 语言提供的一个警告框函数。
                    // 它可以输出指定的内容, 变量等信息
                    //scrpt 标签的位置,可以在 head 中,也可以在 body 体
                    window.alert("hello, 韩顺平教育");
                    
                    
                    
                    

                    使用方式 2: 使用 script 标签引入 JS 文件

                    通过 标签的 src 属性引用外部 JavaScript 文件。

                     
                     
                     

                    两种使用 js 的方式,是二选一,不能混用, 如果你两种方式都使用了,不会报错

                    但是只有一个生效, 前面引入的 js 生效

                    🌍二. js变量

                    在 JavaScript 中,变量是存储信息的容器。它们是编程语言中的基本构建块,用于存储数据值,这些值可以在需要时进行修改。以下是关于 JavaScript 变量的一些关键点:

                    1. 变量的声明

                    在 JavaScript 中,你可以使用以下关键字来声明变量:

                    • var:ES5 及更早版本中的传统声明方式,具有函数作用域。
                    • let:ES6(ECMAScript 2015)中引入,具有块作用域。
                    • const:ES6 中引入,用于声明一个只读的常量引用,也具有块作用域。

                      2. 示例

                      使用 var 声明变量

                      var x = 10;
                      

                      使用 let 声明变量

                      let y = 20;
                      

                      使用 const 声明变量

                      const PI = 3.14159;
                      

                      3. 变量的命名规则

                      • 变量名必须以字母、下划线(_)或美元符号($)开头。
                      • 变量名不能以数字开头。
                      • 变量名只能包含字母、数字、下划线和美元符号。
                      • 变量名不能是 JavaScript 中的保留字或关键字,如 if, else, var, let, const 等。

                        4. 变量的类型

                        JavaScript 是一种动态类型语言,这意味着同一个变量可以用来存储不同类型的数据。以下是 JavaScript 中的一些基本数据类型:

                        • String:表示文本数据,例如 "Hello, World!"。
                        • Number:表示数值数据,例如 42 或 3.14。
                        • Boolean:表示逻辑值 true 或 false。
                        • Undefined:表示未定义的值,即声明了变量但未初始化。
                        • Null:表示空值或不存在。
                        • Object:表示复杂数据结构,例如对象、数组和函数。
                        • Symbol(ES6 新增):表示唯一的、不可变的数据类型。

                          5. 变量的作用域

                          • var 声明的变量具有函数作用域,如果在函数外部声明,则为全局作用域。
                          • let 和 const 声明的变量具有块作用域,这意味着它们只在声明它们的块({} 内)中有效。

                            6. 变量的提升

                            • var 声明的变量会被提升到其所在作用域的顶部,但不会初始化。
                            • let 和 const 声明的变量也会被提升,但在声明之前不能访问,这被称为“暂时性死区”。

                              了解这些基本概念对于编写有效的 JavaScript 代码至关重要。随着 JavaScript 语言的发展,let 和 const 已成为声明变量的首选方式,因为它们提供了更好的作用域管理和代码清晰度。

                              🌍三. 数据类型

                              JavaScript 中的数据类型分为两大类:基本(原始)数据类型和引用(对象)数据类型。

                              1. 基本数据类型(Primitive Types)

                              基本数据类型是表示简单值的类型,它们是:

                              1.String

                              • 表示文本数据,可以是单引号、双引号或反引号(模板字符串)包围的字符序列。
                              • 示例:"Hello, World!", 'JavaScript', `This is a template string`
                              • tring 字符串 [可以双引号括起来,也可以单引号括起来]
                              • 实例:"a book of JavaScript"、'abc'、"a"、""

                                2.Number

                                • 表示整数和浮点数,也包括 Infinity(无穷大)、-Infinity(负无穷大)和 NaN(不是一个数字)。
                                • 示例:42, 3.14, Infinity, -Infinity, NaN

                                  3.Boolean

                                  • 表示逻辑值,只有两个可能的值:true 和 false。
                                  • 示例:true, false

                                    4.Undefined

                                    • 表示声明了变量但未初始化的值。
                                    • 示例:undefined(注意:undefined 也是一个全局变量,但最好使用它作为数据类型而不是变量)

                                      5.Null

                                      • 表示空值或不存在对象的引用。
                                      • 示例:null

                                        6.Symbol (ES6 新增)

                                        • 表示唯一的、不可变的数据类型,常用于对象的属性名,以确保不会与其他属性名冲突。
                                        • 示例:Symbol("description")

                                          7.BigInt (ES2020 新增)

                                          • 表示大整数,可以表示超过 Number 类型安全范围的整数值。
                                          • 示例:BigInt("123456789012345678901234567890")

                                            2. 引用数据类型(Reference Types)

                                            引用数据类型是指对象,它们可以存储多个值和更复杂的数据结构。以下是 JavaScript 中的几种引用类型:

                                            1.Object

                                            • 表示一组无序的键值对,是所有复杂数据结构的基础。
                                            • 示例:{ name: "Alice", age: 25 }

                                              2.Array

                                              • 表示一组有序的元素集合,可以包含不同类型的值。
                                              • 示例:[1, "two", true]

                                                3.Function

                                                • 表示函数,JavaScript 中的函数是一等公民,可以作为值来使用。
                                                • 示例:function greet(name) { return "Hello, " + name; }

                                                  除了上述基本引用类型,JavaScript 还提供了许多内置对象,如 Date、RegExp(正则表达式)、Map、Set、WeakMap、WeakSet 等。

                                                  3. 类型检测

                                                  在 JavaScript 中,可以使用以下方法来检测变量的数据类型:

                                                  • typeof 操作符:用于检测基本数据类型,对于引用类型(除了函数),它会返回 "object"。
                                                  • instanceof 操作符:用于检测对象是否是特定构造函数的实例。
                                                  • Object.prototype.toString.call() 方法:可以准确检测对象的具体类型。

                                                    例如:

                                                    typeof "Hello"; // "string"
                                                    typeof 42; // "number"
                                                    typeof true; // "boolean"
                                                    typeof undefined; // "undefined"
                                                    typeof null; // "object"(这是 JavaScript 的一个历史错误)
                                                    typeof Symbol(); // "symbol"
                                                    typeof {}; // "object"
                                                    typeof []; // "object"(注意:数组也是对象)
                                                    typeof function() {}; // "function"
                                                    let arr = [];
                                                    arr instanceof Array; // true
                                                    arr instanceof Object; // true(因为数组也是对象)
                                                    Object.prototype.toString.call([]); // "[object Array]"
                                                    

                                                    🌍四. 运算符

                                                    1. 算术运算符

                                                    1. 算术运算符用于执行变量与/或值之间的算术运算。
                                                    2. y 等于 5,下面的表格解释了这些算术运算符

                                                    【JavaWeb03】 入门JavaScript:轻松掌握前端开发核心技能

                                                    2. 赋值运算符

                                                    1. 赋值运算符用于给 JavaScript 变量赋值。
                                                    2. 给定 x=10 和 y=5,下面的表格解释了赋值运算符

                                                    【JavaWeb03】 入门JavaScript:轻松掌握前端开发核心技能

                                                    3. 关系运算符

                                                    1. 关系(比较) 运算符在逻辑语句中使用,以测定变量或值是否相等。
                                                    2. 给定 x=5,下面的表格解释了比较运算符

                                                    【JavaWeb03】 入门JavaScript:轻松掌握前端开发核心技能

                                                    等于: == 是简单的做字面值的比较

                                                    全等于: === 除了做字面值的比较之外,还会比较两个变量的数据类型

                                                    var a = "100";//string

                                                    var b = 100;//number

                                                    console.log(a == b);//true

                                                    console.log(a === b);//false

                                                    4. 逻辑运算符

                                                    1. 逻辑运算符用于测定变量或值之间的逻辑。
                                                    2. 给定 x=6 以及 y=3,下表解释了逻辑运算符

                                                    【JavaWeb03】 入门JavaScript:轻松掌握前端开发核心技能

                                                    注意事项:

                                                    • 在 JavaScript 语言中,所有的变量,都可以做为一个 boolean 类型的变量去使用。
                                                    • 0 、null、 undefined、""(空串) 都认为是 false
                                                    • && 且运算,有两种情况
                                                      • 当表达式全为真的时候,放回最后一个表达式的值
                                                      • 当表达式中,有一个为假时,返回第一个为假的值
                                                      • || 或运算, 有两种情况 =
                                                        • 当表达式全为假的时候,放回最后一个表达式的值
                                                        • 当表达式中,有一个为真时,返回第一个为真的值

                                                          🌍 五. 数组

                                                          1. 数组定义

                                                          数组定义方式 1

                                                          var cars1 = ["Audi", "BMW", "Volvo"];
                                                          console.log("cars1=" + cars1);
                                                          console.log(cars1[1]);//表示访问 cars1 数组的第 2 个元素, 1 表示下标/索引,
                                                          从 0 开始编号
                                                          

                                                          数组定义方式 2

                                                          var cars2 = [];//空数组
                                                          //添加元素
                                                          cars2[0] = "奥迪";
                                                          cars2[1] = "宝马";
                                                          cars2[2] = "奔驰";
                                                          console.log("cars2=" + cars2);
                                                          console.log("cars2[2]=" + cars2[2]);//奔驰
                                                          console.log("cars2[10]=" + cars2[10]);// 如 果 该 元 素 不 存 在 , 返 回 的 就 是
                                                          undefined
                                                          

                                                          数组定义方式 3

                                                          var cars3 = new Array("Audi", "BMW", "Volvo");
                                                          console.log("cars3=" + cars3);
                                                          console.log("cars3[0]=" + cars3[0]);//Audi
                                                          

                                                          数组定义方式 4

                                                          var cars4 = new Array();//空数组
                                                          console.log(typeof cars4);
                                                          cars4[0] = "法拉利";
                                                          cars4[1] = "保时捷";
                                                          cars4[2] = "yy";//相当于是给数组扩容
                                                          cars4[0] = "zz";//替换
                                                          cars4[8] = "红旗";//扩容, 如果是跳过了下标给赋值,那么中间没有赋值的元素
                                                          为 undefined
                                                          console.log("cars4[3]=" + cars4[3]);//undefined
                                                          console.log("cars4= " + cars4);
                                                          

                                                          2. 数组使用和遍历

                                                          
                                                          
                                                          
                                                          数组使用和遍历
                                                          
                                                          var cars = ["Audi", "BMW", "Volvo", 100, 1.1, true];
                                                          //遍历
                                                          console.log("数组的长度= " + cars.length)//6
                                                          for (i = 0; i  
                                                          

                                                          🌍六. js函数

                                                          一句话:函数是由事件驱动的,或者当它被调用时,执行的可重复使用的代码块

                                                          1. 函数定义方式

                                                          方式 1: function 关键字来定义函数

                                                          定义没有返回值的函数

                                                          function f1() {
                                                          alert("f1() 被调用...");
                                                          }
                                                          f1();
                                                          

                                                          定义有形参的函数,这里的形参,不需要指定类型, name 的数据类型是由实参决定

                                                          function f2(name) {
                                                          alert("hi " + name);
                                                          }
                                                          f2("刘");
                                                          

                                                          定义有形参和返回值的函数, 不需要指定返回类型, 返回类型由返回的数

                                                          据来决定,js 的函数调用机制和 java 一样

                                                          function f3(n1, n2) {
                                                          return n1 + n2;
                                                          }
                                                          alert("f3(10, 20)=" + f3(10, 20));
                                                          

                                                          方式 2: 将函数赋给变量

                                                          var f1 = function () {
                                                          alert("hi");
                                                          }
                                                          console.log(typeof f1);
                                                          f1();//调用函数
                                                          

                                                          2. JavaScript 函数注意事项和细节

                                                          1. JS 中函数的重载会覆盖掉上一次的定义,也就是没有重载

                                                          2. 函数的 arguments 隐形参数(作用域在 function 函数内)

                                                            (1) 隐形参数: 在 function 函数中不需要定义,可以直接用来获取所有参数的变量。

                                                            (2) 隐形参数特别像 java 的可变参数一样。 public void fun( int … args )

                                                            (3) js 中的隐形参数跟 java 的可变参数一样。操作类似数组

                                                          3. 如果我们的函数有形参,在传入实参的时候,仍然按照顺序匹配

                                                            (1)如果有匹配上,就赋给他, 如果没有匹配上,也无所谓

                                                            (2)仍然会把所有的实参,赋给 arguments

                                                            (3)如果形参个数,大于了实参个数,则该形参的值为 undefined

                                                          🌍七. 事件

                                                          1. 事件是电脑输入设备与页面进行交互的响应
                                                          2. 事件通常与函数配合使用,这样就可以通过发生的事件来驱动函数执行

                                                          事件一览表

                                                          【JavaWeb03】 入门JavaScript:轻松掌握前端开发核心技能

                                                          【JavaWeb03】 入门JavaScript:轻松掌握前端开发核心技能

                                                          1. 事件的注册(绑定)

                                                            事件注册(绑定):当事件响应(触发)后要浏览器执行哪些操作代码,叫事件注册或事件绑定

                                                          2. 静态注册事件

                                                            通过 html 标签的事件属性直接赋于事件响应后的代码,这种方式叫静态注册

                                                          3. 动态注册事件(

                                                            通过 js 代码得到标签的 dom 对象,然后再通过 dom 对象.事件名 = function(){} 这种形

                                                            式叫动态注册

                                                            4.16.4 动态注册事件步骤

                                                          4. 获取标签dom 对象
                                                          5. dom 对象.事件名 = fucntion(){}

                                                          onload 加载完成事件

                                                          1. onload : 某个页面或图像被完成加载
                                                          2. 在 js 中,将页面窗口 映射成 window dom 对象
                                                          3. window 对象有很多的函数和属性,可以使用
                                                          4. window.onload 表示页面被加载完毕
                                                          5. 后面的 function (){} 表示加载完毕后,要执行的函数/代码
                                                          
                                                          
                                                          
                                                          onload 加载完成事件
                                                          
                                                          //定义了一个函数
                                                          function sayOK() {
                                                          alert('静态注册 onload 事件 sayOK');
                                                          }
                                                          window.onload = function () {
                                                          alert("动态注册 onload 事件");
                                                          }
                                                          
                                                          
                                                          
                                                          
                                                          hello~
                                                          
                                                          
                                                          
                                                          

                                                          onclick 单击事件

                                                          1. onclick : 鼠标点击某个对象
                                                          2. 动态注册 onclick 事件
                                                          3. 先拿到 id=btn01 的 button 对应 dom 对象
                                                          4. 通过 dom 对象动态的绑定 onclick 事件
                                                          5. 通过 document 的 getElementById 获取对应的 dom 对象
                                                          
                                                          
                                                          
                                                          onclick 单击事件
                                                          
                                                          function sayOK() {
                                                          alert("你点击了 sayOK 按钮");
                                                          }
                                                          //当页面加载完毕后,我们再进行动态绑定
                                                          //基本概念和机制一定要清楚
                                                          window.onload = function () {
                                                          var btn01 = document.getElementById("btn01");
                                                          btn01.onclick = function () {
                                                          alert("你点击了 sayHi 按钮");
                                                          }
                                                          }
                                                          
                                                          
                                                          
                                                          
                                                          sayOK 按钮
                                                          sayHi 按钮
                                                          
                                                          
                                                          

                                                          onblur 失去焦点事件

                                                          onblur : 元素失去焦点

                                                          通过下面任务来理解 onblur

                                                          输入小写单词,当输入框失去焦点时,小写单词转换大写

                                                          【JavaWeb03】 入门JavaScript:轻松掌握前端开发核心技能

                                                          
                                                          
                                                          
                                                          onblur 失去焦点事件
                                                          
                                                          //静态绑定
                                                          function upperCase() {
                                                          //1. 先得到 fname 输入框的 value -> 得到对应 dom 对象
                                                          var fname = document.getElementById("fname");
                                                          fname.value = fname.value.toUpperCase();
                                                          }
                                                          //在页面加载完毕,完成动态绑定
                                                          window.onload = function () {
                                                          //1.得到 fname2 的 dom 对象
                                                          var fname2 = document.getElementById("fname2");
                                                          fname2.onblur = function () {
                                                          fname2.value = fname2.value.toUpperCase();
                                                          }
                                                          }
                                                          
                                                          
                                                          
                                                          输入英文单词:
                                                          
                                                          输入英文单词:

                                                          o nchange 内容发生改变事件

                                                          1. onchange : 域的内容被改变

                                                          通过下面的代码来理解

                                                          【JavaWeb03】 入门JavaScript:轻松掌握前端开发核心技能

                                                          
                                                          
                                                          
                                                          onchange 内容发生改变事件
                                                          
                                                          韩顺平 Java 工程师
                                                          function mySal() {
                                                          alert("工资范围变化了~");
                                                          }
                                                          //动态注册
                                                          window.onload = function () {
                                                          //获取到 sel01 的 dom 对象
                                                          var sel01 = document.getElementById("sel01");
                                                          //给 sel01 绑定 onchange 事件
                                                          sel01.onchange = function () {
                                                          alert("你换女友的~");
                                                          }
                                                          }
                                                          
                                                          
                                                          
                                                          你当前工资水平: 
                                                          
                                                          --工资范围--
                                                          10k 以下
                                                          10k-30k
                                                          30k 以上
                                                           
                                                          你当前女友是谁: ---女友--- 艳红 春桃 春花

                                                          onsubmit 表单提交事件!

                                                          1. onsubmit : 注册按钮被点击, 提交表单(需求: 如果用户名或密码为空,不能提交表单,正则表达式语法是通用)
                                                          
                                                          
                                                          
                                                          onsubmit 表单提交事件
                                                          
                                                          //静态注册表单提交事件
                                                          function register() {
                                                          //先得到输入的用户名和密码
                                                          var username = document.getElementById("username");
                                                          var pwd = document.getElementById("pwd");
                                                          //判断是否为空""
                                                          if ("" == username.value || "" == pwd.value) {
                                                          alert("用户名和密码不能为空, 不能提交");
                                                          return false;//不提交
                                                          }
                                                          //表示要提交
                                                          return true;
                                                          }
                                                          //动态注册表单提交事件
                                                          window.onload = function () {
                                                          //使用折半法, 观察原页面是否真的是最新的, 是不是修改的页面和访
                                                          问的页面一致
                                                          //得到 from2 表单 dom 对象
                                                          var form2 = document.getElementById("form2");
                                                          // //给 form2 绑定 onsubmit 事件
                                                          // onsubmit 绑定的函数,会直接将结果(f,t)返回给 onsubmit
                                                          form2.onsubmit = function () {
                                                          if(form2.username.value == "" || form2.pwd.value == "") {
                                                          alert("用户名和密码不能为空, 不能提交");
                                                          return false;//不提交
                                                          }
                                                          return true;
                                                          }
                                                          }
                                                          
                                                          
                                                          
                                                          

                                                          注册用户 1

                                                          u:
                                                          p:

                                                          注册用户 2

                                                          u:
                                                          p:

                                                          🌍八. 习题

                                                          onsubmit : 注册按钮被点击, 提交表单, 要求如下

                                                          【JavaWeb03】 入门JavaScript:轻松掌握前端开发核心技能

                                                          
                                                          
                                                          
                                                          onsubmit 表单提交事件
                                                          
                                                          //动态注册表单提交事件
                                                          window.onload = function () {
                                                          var form2 = document.getElementById("form2");
                                                          form2.onsubmit = function () {
                                                          //过关斩将
                                                          if (!(form2.username.value.length >= 4 && form2.username.value.length
                                                          
                                                          alert("用户名长度(4-6)");
                                                          return false;//不提交
                                                          }
                                                          if (form2.pwd.value.length != 6) {
                                                          alert("密码长度(6)");
                                                          return false;//不提交
                                                          }
                                                          if (form2.pwd.value != form2.pwd2.value) {
                                                          alert("两次密码不等");
                                                          return false;//不提交
                                                          }
                                                          //电子邮件-正则表达式 ^[\\w-]+@([a-zA-Z]+\\.)+[a-zA-Z]+$
                                                          var emailPatt = /^[\w-]+@([a-zA-Z]+\.)+[a-zA-Z]+$/;
                                                          if (!emailPatt.test(form2.email.value)) {
                                                          //4 提示用户
                                                          alert("电子邮件格式不正确~")
                                                          return false;
                                                          }
                                                          return true;
                                                          }
                                                          }
                                                          
                                                          
                                                          
                                                          

                                                          注册用户

                                                          用户名: 长度(4-6)
                                                          密 码: 长度(6)
                                                          确 认: 长度(6)
                                                          电 邮: 满足基本格式

                                                          感谢大家的参与和支持,希望我的交流对您有所帮助。愿我们在未来的日子里继续携手共进,共创美好明天!再见!

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码