[华为云在线课程][JavaScript常用对象][学习笔记]

举报
John2021 发表于 2022/02/03 21:59:49 2022/02/03
【摘要】 第1章,JavaScript的数组 1.1,JavaScript数组创建和维护JavaScript数组的概念数组是指一组数据的集合,其中的每个数据被称作为元素,在数组中可以存放任意类型的元素数组是一种将一组数据存储在单个变量名下的优雅方式JavaScript数组的创建方式利用new创建数组利用数组字面量创建数组//1,利用数组字面量方式创建空的数组var a1 = [];//2,使用数组字...

第1章,JavaScript的数组

1.1,JavaScript数组创建和维护

  • JavaScript数组的概念

    • 数组是指一组数据的集合,其中的每个数据被称作为元素,在数组中可以存放任意类型的元素
    • 数组是一种将一组数据存储在单个变量名下的优雅方式
  • JavaScript数组的创建方式

    • 利用new创建数组
    • 利用数组字面量创建数组
//1,利用数组字面量方式创建空的数组
var a1 = [];
//2,使用数组字面量方式创建带初始值的数组
var a2 = ['ab', 'cd', 'ef'];
//3,利用new创建数组
var a3 = new Array();
  • JavaScript数组的元素类型

    • 数组中可以存放任意类型的数据,例如字符串,数字,布尔值等
  • JavaScript数组的获取元素

    • 索引(下标):用来访问数组元素的序号,数组下标从0开始
    • 数组可以通过索引来访问、设置、修改对应的数组元素,可以通过"数组名[索引]"的形式来获取数组中的元素
  • JavaScript数组中新增元素

    • 通过修改length长度新增数组元素
    • 通过修改数组索引新增数组元素
var a2 = ['ab', 'cd', 'ef'];
a2[1] = 'xx';
console.log(a2[1]);//xx
console.log(a2[a2.length - 1]);//ef
console.log(a2);//['ab', 'xx', 'ef']
console.log(typeof a2);//object
/*
        * 新增数组元素
        * 通过修改length长度来新增数组元素
        * */
var a4 = ['red', 'green', 'blue'];
console.log(a4.length);//3
console.log(a4[3]);//undefined
console.log(a4[4]);//undefined
/*
* 通过修改数组索引来新增数组元素
* 不能通过直接给数组名赋值,否则会覆盖掉之前的数据
* */
var a5 = ['red', 'green', 'blue'];
a5[3] = 'pink';
console.log(a5);//['red', 'green', 'blue', 'pink']
a5 = 'yellow';
console.log(a5);//yellow

1.2,JavaScript数组的常用方法

  • JavaScript数组的长度

    • 使用"数组名.length"可以访问数组元素的数量,即数组长度
  • JavaScript数组的常用方法

    • 栈操作(先进后出)
    • 队列操作(先进先出)
    • 排序方法
    • 位置方法
    • 连接和切片方法
  • JavaScript数组的常用方法案例:

var arr1 = [1, 2, 3, 4, 5, 6, 7];
var str1 = arr1.join(".");
console.log(str1);//1.2.3.4.5.6.7

var a = [1, 2, 3];
var b = a.concat(4, 5);
console.log(a.toString());//1,2,3
console.log(b.toString());//1,2,3,4,5

var brr1 = [32, 12, 111, 444];
brr1.reverse();//颠倒数组元素
console.log(brr1.toString());//444,111,12,32

var arr = [1, 5, 2, 8];
arr.sort();
console.log(arr);//[1, 2, 5, 8]
var arr2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
var arr3 = arr2.slice(2, 4);//从索引2开始截取,到4之前截至
var arr4 = arr2.slice(4);//从4开始到数组末尾
var arr5 = arr2.slice(2, -1);//从索引2开始到倒数第2个

console.log(arr3.toString());//c,d
console.log(arr4.toString());//e,f,g,h
console.log(arr5.toString());//c,d,e,f,g

/*
* splice(start)
splice(start, deleteCount)
splice(start, deleteCount, item1)
splice(start, deleteCount, item1, item2, itemN)
* */
var ab = [1, 2, 3, 4, 5, 6, 7, 8];
ab.splice(1, 2);//从索引1开始,删除2个元素
console.log(ab.toString());//1,4,5,6,7,8
ab.splice(1, 1);//从索引1开始,删除1个元素
console.log(ab.toString());//1,5,6,7,8
ab.splice(1, 0, 2, 3);//从索引1开始,删除0个元素,从索引1开始2和3两个元素
console.log(ab.toString());//1,2,3,5,6,7,8
var arrays = [1, 2, 3];
arrays.push(4, 5);
console.log(arrays);//[1, 2, 3, 4, 5]
arrays.push([6, 7]);
console.log(arrays);//[1, 2, 3, 4, 5, [6, 7]]
arrays.pop();
console.log(arrays);//[1, 2, 3, 4, 5]

var abrr1 = [1, 2, 3];
abrr1.unshift(4, 5);
console.log(abrr1);//[4, 5, 1, 2, 3]
abrr1.unshift([6, 7]);
console.log(abrr1);//[[6, 7],4, 5, 1, 2, 3]
abrr1.shift();
console.log(abrr1);//[4, 5, 1, 2, 3]
var arr = [2, 6, 1, 7, 4];
var sum = 0;
var avgValue;
for (var i = 0, len = arr.length; i < len; i++) {
    //我们加的是数组元素,不是计数器
    sum += arr[i];
}
avgValue = sum / arr.length;
//想要输出多个变量,用逗号分隔即可
console.log(sum, avgValue);//20 4
var arr = ['red', 'green', 'blue', 'pink'];
var str = '';
var stp = "|";
for (var i = 0, len = arr.length; i < len; i++) {
    str += arr[i] + stp;
}
console.log(str);//red|green|blue|pink|
var arr = [2, 6, 1, 77, 52, 25, 7];
var max = arr[0];
for (var i = 1, len = arr.length; i < len; i++) {
    if (arr[i] > max) {
        max = arr[i];
    }
}
console.log("该数组里面的最大值是:" + max);//该数组里面的最大值是:77
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
//刚开始 newArr.length 就是0
for (var i = 0, len = arr.length; i < len; i++) {
    if (arr[i] >= 10) {
        //新数字应该从0开始 依次递增
        newArr[newArr.length] = arr[i];
    }
}
console.log(newArr);//[77, 52, 25]

1.3,JavaScript数组遍历

  • for循环:

    • 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显
    • for(var j=0,len=arr.length;j<len;j++){执行代码}
  • foreach循环:

    • 遍历数组中的每一项,没有返回值,对原数组没有影响
    • arr.forEach((item,index,array)=>{//执行代码})
  • map循环:

    • map的回调函数中支持return返回值;return具体值,相当于把数组中的这一项变为具体值,并不影响原来的数组,只是把相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了。
    • arr.map(function(value,index,array){return 具体值;})
  • for…of遍历

    • for…of语句创建一个循环来迭代可迭代的对象
    • for(var value of myArray){console.log(value);}
  • filter遍历

    • filter()方法是对原数组进行过滤筛选,产生一个新的数组对象
    • arr.filter(item => item.属性);
  • every遍历

    • every()是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则返回true
    • arr.every(function(item,index,array){return item > 具体值;});
  • some遍历

    • some()是对数组中每一项运行指定函数,如果该函数对任一项返回true,则返回true
    • arr.some(function(item,index,array){return item > 具体值;});
  • reduce遍历

    • reduce()方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终作为一个值
    • arr.reduce(function())
  • reduceRight遍历

    • reduceRight()方法的功能和reduce()功能是一样的,不同的是reduceRight()从数组的末尾向前将数组中的数组项做累加
    • arr.reduceRight(function(preValue,curValue,index,array){return preValue+curValue;});
  • find查找遍历

    • find()方法返回数组中符合测试函数条件的第一个元素,否则返回undefined
    • arr.find()
var arr1 = [10, 100, 20, 40];
for (var i = 0, len = arr1.length; i < len; i++) {
    console.log("数组中的每个元素:" + arr1[i]);
}
/*
* 数组中的每个元素:10
* 数组中的每个元素:100
* 数组中的每个元素:20
* 数组中的每个元素:40
* */
var ary = [12, 23, 24, 42, 1];
for (var value of ary) {
    console.log(value);
}
/*
* 12
* 23
* 24
* 42
* 1
* */
var arr = [1, 3, 5, 7, 20];
arr.forEach(function (value, index, array) {
    console.log("数组的下标是:" + index +
        ",数组中的元素值为:" + value +
        ",原数组是:" + array.toString());
});
/*
* 数组的下标是:0,数组中的元素值为:1,原数组是:1,3,5,7,20
* 数组的下标是:1,数组中的元素值为:3,原数组是:1,3,5,7,20
* 数组的下标是:2,数组中的元素值为:5,原数组是:1,3,5,7,20
* 数组的下标是:3,数组中的元素值为:7,原数组是:1,3,5,7,20
* 数组的下标是:4,数组中的元素值为:20,原数组是:1,3,5,7,20
* */
var arr = [73, 84, 56, 22, 100];
var newArr = arr.filter(function (item) {
    return item > 80;
});
console.log(newArr.toString());//84,100
var ary = [12, 23, 24, 42, 1];
var res = ary.map(function (item, index, ary) {
    return item * 10;
});
console.log(res.toString());//120,230,240,420,10
var arr = [1, 2, 3, 4, 5, 6];
console.log(arr.every(function (item, index, array) {
    return item > 3;
}));
var arr = [1, 2, 3, 4, 5, 6];
console.log(arr.some(function (item, index, array) {
    return item > 3;//true
}));
var arr = [0, 1, 2, 3, 4];
var res = arr.reduceRight(function (preValue, curValue, index, array) {
    return preValue + curValue;
});
console.log(res);//10
var arr = [0, 1, 2, 3, 4];
var result = arr.reduce(function (preValue, curValue, index, array) {
    return preValue + curValue;
});
console.log(result);//10
var stu = [
    {name: '张三', gender: '男', age: 10},
    {name: '李四', gender: '男', age: 20},
    {name: '王五', gender: '女', age: 30}
];

function getStu(element) {
    return element.name == '李四';
}

var res = stu.find(getStu);
console.log(JSON.stringify(res));//{"name":"李四","gender":"男","age":20}

1.4,JavaScript数组去重

  • 遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组
function removeDuplicatedItem(array) {
    var ret = [];
    for (var i = 0, len = array.length; i < len; i++) {
        if (ret.indexOf(array[i]) === -1) {
            ret.push(array[i]);
        }
    }
    return ret;
}

var arr = [1, 1, 2, 2, 3, 3, 4, 4];
var resultArray = removeDuplicatedItem(arr);
console.log(resultArray.toString());//1,2,3,4

第2章,JavaScript的Date日期对象

2.1,JavaScript的Date日期对象定义

  • Date对象是一个专门用来创建时间对象的引用类型
  • Date()日期对象是一个构造函数,必须使用new关键字来调用创建具体的日期对象
    • 创建一个当前的时间对象:var d = new Date();
    • 创建一个指定的时间对象:var d = new Date("2/2/2022 12:05:50");
/*
* Date对象
* 在JavaScript使用我们的Date对象来表示时间
* 创建一个Date对象
* 如果直接使用构造函数创建一个Date对象,
* 则会封装为当前代码的执行时间
* */
var d = new Date();
console.log(d);//Wed Feb 02 2022 12:09:04 GMT+0800 (中国标准时间)
/*
* 创建一个指定的事件对象
* 需要在构造函数中传递一个表示时间的字符串作为参数
* 日期格式: 月/日/年 时:分:秒
* */
var d2 = new Date("02/02/2022");
console.log(d2);//Wed Feb 02 2022 00:00:00 GMT+0800 (中国标准时间)

2.2,JavaScript的Date日期对象使用

  • getFullYear()

    • 语法:时间对象.getFullYear();
    • 返回值:获取当前年份信息,number数据类型;
  • getMonth()

    • 语法:时间对象.getMonth();
    • 返回值:获取当前月份信息,0-11,number数据类型;
  • getDate()

    • 语法:时间对象.getDate();
    • 返回值:获取当前日信息,1-31,number数据类型
  • getHours()

    • 语法:时间对象.getHours();
    • 返回值:获取当前小时信息,0-23,number数据类型
  • getMinutes()

    • 语法:时间对象.getMinutes();
    • 返回值:获取当前分钟信息0-59,number数据类型
  • getSeconds()

    • 语法:时间对象.getSeconds();
    • 返回值:获取当前秒钟信息,0-59,number数据类型
/*
        * getFullYear(),获取当前日期对象的年份
        * */
var d2 = new Date();
console.log("年:" + d2.getFullYear());//年:2022
/*
* getMonth(),获取当前的月份信息,返回0-11的值
* getDate(),获取当前日期对象是几日,1-31
* */
var d3 = new Date();
month = d3.getMonth() + 1;
console.log("月:" + month);//月:2
console.log("日:" + d3.getDate());//日:2
console.log("时:" + d3.getHours());//时:13
console.log("分:" + d3.getMinutes());//分:50
console.log("秒:" + d3.getSeconds());//秒:49
/*
* 时间戳:指的是从格林威治时间的1970年1月1日0时0分0秒
* 到现在日期所花费的毫秒数(1000毫秒=1秒)
* 计算机底层在保存时间的时候使用的都是时间戳
* */

第3章,JavaScript的字符串

3.1,JavaScript的字符串定义

  • new String(s);

    • String和new一起使用,创建的是一个字符串对象,存放的是字符串s的表示
  • String(s);

    • 使用String创建的是s字符串的原始值
  • 直接用""赋值

    • String的简写,创建的是字符串的原始值
        //string是基本包装类型,特殊的引用类型
var str1 = "123";
console.log(str1);//123
//无法动态添加属性和方法
str1.num = 1;//Value assigned to primitive will be lost
console.log(str1.num);//undefined
//使用new修饰符创建的string对象就是Object引用类型的对象
var box = new String('stus');
//动态添加属性和方法
box.name = "xiao";
box.age = function () {
    return 10;
}
console.log(box.name);//xiao
console.log(box.age());//10
console.log(box.substring(2));//us,从下标2开始截取
        /*
        * 1,拖慢执行速度
        * 2,new关键字会使代码变复杂,可能会产生
        * 一些意想不到的结果
        * */
var x = "hello";
var y = new String("hello");
console.log(x == y);//true x和y值相等
console.log(x === y);//false x和y值相等,类型不相等

3.2,JavaScript的字符串的常用方法

方法名 描述
indexOf() 返回指定内容在字符串中的位置,如果找不到就返回-1
lastIndexOf() 从后往前找,只找第一个匹配的
charAt(index) 返回指定位置的字符(index字符串的索引号)
charCodeAt(index) 获取指定位置处字符的ASCII码(index索引号)
str[index] 获取指定位置处字符
concat(str1,str2,str3…) concat()方法用于连接两个或多个字符串。拼接字符串,等效于+,+更常用
substr(start,length) 从start位置开始(索引号),length取的个数
slice(start,end) 从start位置开始,截取到end位置,end取不到(它们两都是索引号)
substring(start,end) 从start位置开始,截取到end位置,end取不到,基本和slice相同,但是不接受负值
toUpperCase() 转换大写
toLowerCase() 转换小写
var str1 = "12345";
console.log(str1.length);//5

var str2 = "whatareyounoshalei";
var result = str2.charAt(2);
console.log(result + 1);//a1

var str3 = "what";
console.log(str3 + "are" + "you" + "no" + "sha" + "lei");//whatareyounoshalei

var str4 = "小苏";
console.log(str4.concat("喜欢", "苹果", "这是", "真的"));//小苏喜欢苹果这是真的

var str5 = "小苏喜欢苹果这是真的";
var index1 = str5.indexOf("喜", 5);
console.log(index1);//-1

var index2 = str5.indexOf("喜欢", 1);
console.log(index2);//2

var str6 = "hello huawei";
var index3 = str6.lastIndexOf("a");
console.log(index3);//8

var str7 = "一二三四五六七八九十";
if (str7.indexOf("七") != -1) {
    str7 = str7.replace("七", "华为");
} else {
    console.log("不存在");
}
console.log(str7);//一二三四五六华为八九十

var str8 = "如果华为给我offer,我就立刻去上班";
str8 = str8.slice(2, 11);
console.log(str8);//华为给我offer

var str9 = "华为|华为云|智能|见未来";
var arr = str9.split("|");
for (let i = 0; i < arr.length; i++) {
    console.log(arr[i]);
}//华为 华为云 智能 见未来

var str10 = "华为云+智能=见未来";
str10 = str10.substr(5, 5);
console.log(str10);//能=见未来

var str11 = "华为云+智能=见未来";
str11 = str11.substring(5, 9);
console.log(str11);//能=见未

var str12 = "HELLO";
str12 = str12.toLowerCase();
console.log(str12);//hello

var str13 = "hello";
str13 = str13.toUpperCase();
console.log(str13);//HELLO

var str14 = "    华为云   +   智能  = 见未来 ";
str14 = str14.trim();
console.log("===" + str14 + "===");//===华为云   +   智能  = 见未来===

第4章,JavaScript的Math对象

4.1,JavaScript的Math对象

  • Math属于一个工具类,它不需要我们创建对象

    • 例如:Date日期对象需要通过构造函数创建对象var 变量 = new Date(),Math不需要创建对象。
  • Math封装了属性运算相关的常量和方法,我们可以直接使用它来进行数学运算相关的操作

4.2,JavaScript的Math方法

  • JavaScript的Math对象的常用方法
方法名 描述
Math.PI 常量,圆周率
Math.abs() 绝对值运算
Math.ceil() 向上取整
Math.floor() 向下取整
Math.round() 四舍五入取整
Math.random() 生成一个0-1之间的随机数
Math.pow(x,y) 求x的y次幂
Math.sqrt() 对一个数进行开方
Math.max() 求多个数中最大值
Math.min() 求多个数中最小值
console.log(Math.PI);//3.141592653589793
console.log(Math.abs(-1));//1
console.log(Math.ceil(1.0));//1
console.log(Math.floor(2.4344578));//2
console.log(Math.round(7.4));//7
console.log(Math.random());//0.725703703984999
console.log(Math.pow(2, 3));//8
console.log(Math.sqrt(9));//3
console.log(Math.max(1, 2, 3, 4, 5));//5
console.log(Math.min(1, 2, 3, 4, 5));//1

第5章,JavaScript的包装类型

5.1,JavaScript的包装类的定义

  • 在JavaScript中提供了三个包装类:

    • String(),基本数据类型字符串转换为String对象
    • Boolean(),基本数据类型的布尔值转换为Boolean对象
    • Number(),基本数据类型的数字转换为Number对象
  • 包装类作用:

    • 操作一个基本数据类型的属性和方法时,解析器会临时将其包装成这个对应的对象,然后再去操作属性和方法,操作完成之后再将这个临时对象进行销毁。
var str1 = "123";
var str2 = new String("123");//"123"变成了一个字符串对象

var num1 = 123;
var num2 = new Number(3);

var bool1 = true;
var bool2 = new Boolean(true);

console.log(str1 === str2);//false
console.log(str1);//123
console.log(str2);//String {'123'}

console.log(num1 === num2);//false
console.log(num1);//123
console.log(num2);//Number{3}

console.log(bool1 === bool2);//false
console.log(bool1);//true
console.log(bool2);//Boolean{true}

5.2,JavaScript的包装类的常用方法

  • JavaScript的包装类的常用方法:
    • Boolean没有内置方法
    • Number内置方法
  • Number 静态属性
属性 描述
MAX_VALUE 表示最大数
MIN_VALUE 表示最小值
NaN 非数值
NEGATIVE_INFINITY 负无穷大,溢出返回该值
POSITIVE_INFINITY 正无穷大,溢出返回该值
prototype 原型,用于增加新属性和方法
  • Number 对象的方法
方法 描述
toString() 将数值转化为字符串,并且可以转换进制
toLocalString() 根据本地数字格式转换为字符串
toFixed() 将数字保留小数点后指定位数并转化为字符串
toExponential() 将数字以指数形式表示,保留小数点后指定位数并转化为字符串
toPrecision() 指数形式或点形式表述数,保留小数点后面指定位数并转化为字符串
console.log(Number.MAX_VALUE);//1.7976931348623157e+308
console.log(Number.MIN_VALUE);//5e-324
console.log(0 / 0);//NaN
console.log(-10 / 0);//-Infinity
Number.prototype.add = function (num) {
    return this + num;
}
console.log((3).add(2));//5
var a = new Number(123.5);
console.log(a.toString());//123.5
console.log(a.toFixed());//124
console.log(a.toExponential());//1.235e+2
console.log(a.toPrecision());//123.5
/*
* Number.isNaN() 不会自行将参数转换为数字,
* 只有在参数值为NaN的时候,才会返回true
* */
console.log(Number.isNaN(NaN));//true
console.log(Number.isNaN(0 / 0));//true
console.log(Number.isNaN('NaN'));//false
console.log(Number.isNaN(true));//false

第6章,JavaScript的正则表达式

6.1,JavaScript的RegExp对象

  • RegExp对象表示正则表达式,它是对字符串执行模式匹配的强大工具。
  • 创建RegExp对象的语法,构造函数方式:
    • var reg = new RegExp(pattern,attributes);
    • pattern:正则表达式
    • attributes:匹配模式:g:全文查找;i:不区分大小写;m:多行查找
  • 直接量语法,字面量方式:
    • var reg = /pattern/attributes;
/*
        * [abc] - 查找方括号之间的任何字符
        * [0-9] - 查找任何从0到9的数字
        * (x|y) - 查找任何以|分割的选项
        * \d - 查找数字
        * \s - 查找空字符串
        * */
var reg = new RegExp(/\d{5}/);
var flag = reg.test("10086");
console.log(flag);//true
var reg1 = /\d{5}/;//查找是否
var flag1 = reg1.test("888");
console.log(flag1);//false

6.2,JavaScript的正则表达式的使用

  • JavaScript正则表达式常用方法:
    • test():检测字符串中的指定值,返回true或者false;
    • exec():检测字符串中的指定值,返回值是被找到的值,没有则返回null;
    • match():一个字符串中执行查找匹配的string方法,它返回一个数组或者在未匹配时返回null
var re = /se/i;
var sh = "SE";
console.log(re.test(sh));
var s = "JavaScript";
var r = /\w/g;
while ((a = r.exec(s))) {
    console.log("匹配文本=" + a[0] + ",a.index=" + a.index +
        ",r.lastIndex=" + r.lastIndex);
}
/*
* 匹配文本=J,a.index=0,r.lastIndex=1
* 匹配文本=a,a.index=1,r.lastIndex=2
* 匹配文本=v,a.index=2,r.lastIndex=3
* 匹配文本=a,a.index=3,r.lastIndex=4
* 匹配文本=S,a.index=4,r.lastIndex=5
* 匹配文本=c,a.index=5,r.lastIndex=6
* 匹配文本=r,a.index=6,r.lastIndex=7
* 匹配文本=i,a.index=7,r.lastIndex=8
* 匹配文本=p,a.index=8,r.lastIndex=9
* 匹配文本=t,a.index=9,r.lastIndex=10
* */
var str = "Hello world!";
console.log(str.match("world"));//['world', index: 6, input: 'Hello world!', groups: undefined]
console.log(str.match("World"));//null
console.log(str.match("Worlld"));//null
console.log(str.match("Hello"));//['Hello', index: 0, input: 'Hello world!', groups: undefined]
var patt = /e/;//寻找字符串中是否含有小写e
console.log(patt.test("JavaScript"));//false
var patt = /e/;//寻找字符串中是否含有小写e
console.log(patt.exec("JavaScript"));//null
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200