当我们想要创建多个对象时很容易造成代码冗余,那么我们可以使用函数或者自定义构造函数去创建对象。
//使用函数 : 创建多个对象,解决代码冗余
function createPerson(name,age,sex){
//1.声明空对象
var p = {};
//2.赋值
p.name = name;//左边:属性 = 右边:形参值
p.age = age;
p.sex = sex;
//3.返回赋值好的对象
return p ;
};
var banzhang = createPerson('班长',36,'男');//调用函数传参即可
console.log(banzhang);
//自定义构造函数创建对象
// 下面代码做的事和上面普通函数一样的,只是语法更加简洁
function CreatePerson(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
};
var banzhang = new CreatePerson('班长',36,'男');//使用new关键字
console.log(banzhang);
function fn(name, age, sex) {
//1.创建空对象 {}
//2.将this指向这个对象 this = {}
//3.执行赋值代码
this.name = name;
this.age = age;
this.sex = sex;
//4.自动返回这个对象
// return 666; // 基本数据类型,无效
//return [10,20,30];//复杂数据类型 ,覆盖new创建的对象
};
1.构造函数名字首字母大写(提醒别人别忘记new关键字)
2.如果在构造函数中使用的return关键字
var date = new Date();
//1.创建一个Date对象
var date = new Date();
/*时间日期打印*/
//2.打印当前完整时间: (1)默认显示当前电脑的时区时间 (2)打印date时会自动转为字符串 date.toString()
console.log ( date );//Fri Mar 23 2020 20:45:15 GMT+0800 (中国标准时间)
//3.打印日期:标准版本
console.log ( date.toDateString () );//Fri Mar 23 2018
//4.打印日期:本地版本(当前电脑)
console.log ( date.toLocaleDateString () );// 2018/3/23
//5.打印当前时间:标准版本
console.log ( date.toTimeString () );//20:51:17 GMT+0800 (中国标准时间)
//6.打印当前时间:本地版本
console.log ( date.toLocaleTimeString () );//下午8:51:17
/*年月日时打印*/
//1.打印当前年份
console.log ( date.getFullYear () );//2018
//2.打印当前月份 范围:0-11 代表 1-12月
console.log ( date.getMonth () );//2 代表下标2 也就是3月
//3.打印当前日
console.log ( date.getDate () );//23
//4.打印当前星期 范围0-6 代表星期天-星期六
console.log ( date.getDay () );//5
//5.打印时
console.log ( date.getHours () );
//6.打印分
console.log ( date.getMinutes () );
//7.打印秒
console.log ( date.getSeconds () );
/**创建自定义日期*/
var date1 = new Date(2020,0,1,12,3,5);//依次传入 年,月,日,时,分,秒
console.log ( date1 );//Wed Jan 01 2020 12:03:05 GMT+0800 (中国标准时间)
var date2 = new Date("2022-05-06 12:03:35");
console.log ( date2 );//Fri May 06 2022 12:03:35 GMT+0800 (中国标准时间)
/* Array数组对象
数组常用api
* 连接数组:`concat()`
* 将数组元素拼接成字符串:`join()`
* 删除数组最后一个元素:`pop()`
* 往数组后面添加元素:`push()`
* 翻转数组:`reverse()`
* 删除数组第一个元素:`shift()`
* 查找数组元素:`slice()`
* 数组排序:`sort()`
*/
var arr1 = [10, 20, 30, 40];
var arr2 = [33, 44, -1]
//1.连接多个数组:将传入的数组的所有元素都添加到arr1的后面
var arr3 = arr1.concat(arr2, arr1);
console.log(arr3); //[10, 20, 30, 40, 33, 44, 10, 20, 30, 40]
//2.将数组中的每一个元素都拼接成一个字符串
var str = arr1.join();
console.log(typeof str);
console.log(str); //10,20,30,40
//3.pop()删除数组最后一个数
arr1.pop();
console.log(arr1); //[10, 20, 30]
//4.往数组后面添加元素:`push()`
console.log(arr1);
arr1.push(arr2, 99);
console.log(arr1); //[10, 20, 30, Array(3), 99]
//5.翻转数组:`reverse()`
arr1.reverse();
console.log(arr1); // [99, Array(3), 30, 20, 10]
///6.删除数组的第一个元素
arr1.shift();
console.log(arr1); //[Array(3), 30, 20, 10]
//7.查找一个数组中的某些元素
var arr1 = [10, 20, 70, 40, 50, 60];
// 第一个参数:start:从那一个下标开始查找 如果为负数则倒着查找
//第二个参数: end : 结束位置 start <= 范围 < end
console.log(arr1.slice(1, 3)); //[20, 70]
//8.数组排序 sort
arr1.push(arr2);
var sortarr = arr1.sort(function (a, b) {
return a - b;
});
console.log(sortarr);//从小到大排序
console.log(sortarr.reverse());//从小到大翻转一下就变成从大到小
/*
## String字符串对象
* 1.获取字符串长度:`str.length`
* 2.获取字符串某一个下标字符:`str.charAt()`
* 3.拼接字符串:`str.concat`
* 4.判断字符串中是否包含某些字符串:`str.indexOf()`
* 5.截取字符串:`str.substr()`
* 6.修改字符串:`str.replace()`
* 7.大小写转换:`str.toLowerCase()`小写 `str.toUpperCase()`大写
* 8.分隔字符串:`str.split()`
*/
var str = "欢迎来到 ITheima 程序员!"
console.log(str.charAt(0)); //欢
//拼接字符串:`str.concat`
var str1 = str.concat("一起加油!", "666");
console.log(str1); //欢迎来到 ITheima 程序员!一起加油!666
//判断字符串中是否包含某些字符串:`str.indexOf()`
console.log(str.indexOf("程序员")); //包含返回第一个匹配的字符下标:13
console.log(str.indexOf("程序猿")); //不包含返回:-1
//截取字符串:`str.substr(index,length)`
//第一个参数:从哪个下标开始截取 第二个参数:截取的长度
var substr = str.substr(5, 7);
console.log(substr); //ITheima
//修改字符串:`str.replace(str1,str2)`
//第一个参数:要修改的字符串 第二个参数:修改后的字符串
//它并不会在原有的字符串上去修改 而是返回一个新的字符串
var repstr = str.replace("程序员", "前端工程师");
console.log(str); //欢迎来到 ITheima 程序员!
console.log(repstr); //欢迎来到 ITheima 前端工程师!
//大小写转换:`str.toLowerCase()`小写 `str.toUpperCase()`大写
console.log(str.toLowerCase()); //欢迎来到 itheima 程序员!
console.log(str.toUpperCase()); //欢迎来到 ITHEIMA 程序员!
//`str.split()`分隔字符串:将字符串按照指定的符号分隔,得到一个数组
var str2 = "人本/过客/来无处,休说/故里/在何方"
var splstr1 = str2.split(",");
var splstr2 = str2.split("/");
console.log(splstr1); //["人本/过客/来无处", "休说/故里/在何方"]
console.log(splstr2); //["人本", "过客", "来无处,休说", "故里", "在何方"]
var str1 = 'abc'
str1[0] = 'b'
str1 = 'cba';
var str2 = 'cba'
str2 = str1
,编译器不会重新开辟内存空间,而是从已有的字符串中寻找str2 += 'abc'
'cba' + 'abc'
拼接之后的新字符串赋值给str2js中只有两种:全局作用域 局部作用域
1.全局作用域:变量在任何地方起作用
全局变量:在函数外面声明
2.局部作用域:变量只能在函数内部起作用
局部变量:在函数内部声明
注意点:js中只有函数才可以开辟作用域,其他的任何语句都不可以
五种基本数据类型:string,number,boolean,undefine,null
两种复杂数据类型:array,object(function属于object)
除数组之外,所有的数据类型都可以使用 `typeof 变量名
`来判断
数组是一个例外,如果使用 `typeof 数组名
`得到的是object
数组名 instanceof Array
:得到boolean类型Array.isArray ( 数组名 )
:得到boolean类型复杂数据类型,两种:array和object
基本数据类型,五种:string number boolean undefined null
//1.值类型:拷贝的是数据
var num1 = 10;
var num2 = num1; //将num1的数据拷贝一份保存到num2中
num2 = 100;
console.log(num1, num2); //修改num2不会对num1造成影响
//2.引用类型: 拷贝的是地址
var arr1 = [10, 20, 30, 40, 50];
var arr2 = arr1; //将arr1的地址拷贝一份保存到num2中
arr2[0] = 100; //修改arr2会对arr1造成影响
console.log(arr1); //[100, 20, 30, 40, 50]
console.log(arr2); //[100, 20, 30, 40, 50]
//1.这行代码会报错,因为函数外部无法使用arguments
// console.log ( arguments );
//2.定义一个无参的函数,作用是打印该函数的所有参数
function fn(num1) {
//(1)arguemnt保存的是所有的实参的值
console.log(num1);//10
//arguments只能在函数内部使用
console.log(arguments);//Arguments(2) [10, 20, callee: ƒ, Symbol(Symbol.iterator): ƒ]
//(2)arguemnt与形参是一一对应的
//修改了形参,arguemnt也会修改
num1 = 100;
console.log(arguments); //[100, 20, callee: ƒ, Symbol(Symbol.iterator): ƒ]
//反之,修改了argeumnts,形参也会变化
arguments[0] = 33;
console.log(num1);//33
}
fn(10, 20); //实参与形参一一对应
/** 二:arguments实际用途展示:根据参数的数量让函数实现不同的功能 */
function test() {
if (arguments.length == 0) {
//执行这个代码
console.log("没有参数");
} else if (arguments.length == 1) {
//执行这个代码
console.log("只有一个参数"+arguments[0]);//只有一个参数100
} else {
//执行这个代码
console.log(arguments[0] + arguments[1]);//30
}
}
test();
test(100);
test(10, 20);
为了让js中的基本数据类型也可以像对象一样调用方法,js中提供了三种特殊的对象类型(基本包装类型)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。