目录
0x00.对象的创建
/*对象:一堆变量+一堆函数的集合
*/
//对象的直接量,如下形式
var obj1={
x:0,//属性名:属性值 以逗号作为一条属性的结束
y:1,//属性名本质上是一个string,也可以写成"x".不加引号则会被隐式的转化为string,属性名如果包含了特殊字符(包括空格)则一定要加引号
z:function(){console.log("z fuction");}
}
var obj2={
x:0,
"x":1//后者会覆盖前者
}
var person1={
name:"xiaoming",
sex:"male",
age:"18",
slogan:function(){
for(var i=0;i<10;i++) {
console.log("我是小明");
}
}
}
var person2={
name:"xiaohong",
sex:"female",
age:"18",
slogan:function(){
for(var i=0;i<10;i++){ console.log("我是小红"); }
},
son:{
name:"honghaier"
}
}
//对象中属性的基本操作,增删改查+遍历
//查:或许属性的值 通过点的形式或者通过方括号的形式
var name=person1.name;//中间有特殊字符必须打引号的属性名不能用点方式查。
var Name=person1["name"];//括号中必须加“”;
//增加:修改属性的时候,如果对象里面没有这条属性则自动加上
person1.height=170;
//删除
delete person1.name;
var xiaoxiaoming=person1.son;
delete person1.son;//var xioaxiaoming仍然存在,但是son被删除了
//遍历
for(var pN in person1){//for代表循环,in代表对象里面的遍历
//person1里面的属性名逐个赋值给pN
console.log("person1的属性名:"+pN+"值="+person1[pN]);
}
//对象的引用和赋值
var person3=person1;//引用 本质是复制地址,person1的本质是一个指针。
person3.name="xiaoming2";//person1和person3中的name都改了。
/*解释:
* 定义了对象
{
name:"xiaohong",
sex:"female",
age:"18",
slogan:function(){
for(var i=0;i<10;i++){ console.log("我是小红"); }
},
son:{
name:"honghaier"
}
}
*定义变量来使用这个对象
var person1=
变量就是一个容器,但是这个容器很小,只能存数字,字符串,布尔值。
对象外边的大括号,相当于将对象打包。存储过程的实质是将对象包裹存入一个柜子。
然后将柜子的编号给了person1。即其实是将对象的地址赋值给了person1
*/
//类:有系统自带的如array,自定义的类
//用类的形式创建对象
//人的类:
/*在ES5语法标准中
用 function PersonClass(){
this.name="xiaoming";
this.sex="male";
this.age="19";
this.slogan=function(){
console.log("我是小明");
}
}的形式创建类,以下用ES6的语法
*/
function PersonClass(){
this.name="xiaoming";
this.sex="male";
this.age="19";
this.slogan=function(){
console.log("我是小明");
}
}
var person4=new PersonClass();
var person5=new PersonClass();
person5.name="xiaohuang";//这样person4和person5就是两个人。
//也可以用“构造函数”的方式直接创建类
function DogClass(dogname,dogage){
this.name=dogname;
this.sex=dogage||1;//相当于缺省参数
this.slogan=function(){
for(var i=0;i<10;i++){
console.log("汪汪"+this.name);
}
}
}
var dog1=new DogClass("大黑","3");
var dog2=new DogClass("狗蛋","2");
var oj1={};//得到一个空的对象
var obj2=new Object();//得到一个空的对象
/*
Object()就相当于{},所有的对象都是从最底层的类衍生过来的。
js中万物皆对象,不论是布尔值值,数字,字符串,系统都会把它转换成对象(值+方法)。
对象 类
数字 Number
字符串 String
布尔值 Bool
*/
var n1=123;
n1.toString();//数字转成字符串,String中方法很多,大家要学会的是查w3cshool文档
var time1=new Date();//获取了当前的本地电脑的时间
var t=0;
for(var i=0;i<10000;i++){
t++;
}
var time2=new Date();
var n=time2.getTime()-time1.getTime();
//与数学相关的
Math.random();//取随机数
字符串:既是基本类型又是对象。
除非你用构造函数来创建字符串,否则你创建的字符串都是基本类型,只不过当你调用字符串的方法时,js解释器会自动将其字符串暂时转化成字符串对象。这样一来,只执行字符串的基本操作(例如:比较,拼接等)时,字符串为基本类型,效率更高,但需要调用字符串的方法时,字符串又可以自动转化为对象。
字符串的属性和方法:
/*1.属性length:
指出字符串包含多少个字符,为遍历字符串中的字符提供了极大的便利。*/
var input = "Hello World";
for(var i=0;i<input.length;i++){
if(input.charAt(i)===o){
alert(“字符串第”+i+“个位置有o”)
}
}
/*
2.方法charAt():参数为一个整数(必须介于0和字符串长度-1之间),返回对应索引位置的字符。注意:js中没有字符类型,因此该返回值是一个字符串。如果参数超过了字符串的长度,将返回一个空字符串。
3.方法indexOf():将一个字符串作为参数,并在字符串中该参数首次出现的位置返回该参数中第一个字符的索引。
*/
var str="Hello World";
var index=str.indexOf("World");//返回6;
//如果没有找到指定的字符串将返回-1;
/*4.方法substring:将两个索引作为参数,提取并返回这两个索引之间的字符串(前闭后开区间),
如果省略了第二个参数,substring将提取从指定索引到字符串末尾的子串*/
var data="hello world"
var val=data.substring(6,11);//返回world
5.方法split:将一个用作分隔符的字符作为参数,并根据这个分隔符将字符串分成多个部分,并返回一个包含这些部分的数组。
var data ="helloworld"
var newdata=data.split("|");//返回数组["hello","world"]
console.log("Split array is",newdata);//这里向console.log传递了两个用逗号分隔的实参,这样在控制台显示数组newdata时就不会被转化为字符串
0x01 常用函数
1.Math
Math是js原生的对象,提供各种功能
Math.abs() 求绝对值
Math.ceil() 向上取整
Math.floor()向下取整
Math.round()四舍五入
Math.max(1,2,3,4,5,6)最大值
Math.min(xxx)最小值
Math.random(没有参数) 返回0-1之间的一个小数随机数
2.String
String对象时js原生提供的三个包装对象之一,用来生成字符串对象
使用方式:变量名.函数名();
(1)变量名.toString() 将变量转化为字符串,等价于String(变量名)、''+变量名
(2)变量名.length 返回字符串的长度,注意不要加括号,这里是属性不是方法
(3)变量名.indexOf('子串') 返回子串在主串中的索引,如果没有就会返回-1
(4)变量名.replace(正则表达式,'替换成谁') 第一个参数不加引号,加两个斜杠即可,/ /g表示全局替换,即所有匹配的都会被替换
(5)变量名.trim() 去掉左右的空格,返回值仍然为一个string对象
(6)变量名.toUpperCase() 转大写
(7)变量名.toLowerCase() 转小写
(8)变量名.substr(开始,数量) 截取字符串
(9)变量名.concat(字符串) 拼接字符串
(10)变量名.split('分隔') 字符串转数组
(11)变量名.match(str) 匹配字符串 返回匹配成功的字符串。
3.Date
date对象也是js原生的时间库
Date.now()返回当前时间距离时间零点(1970年1月1日00:00:00)的毫秒数 = Unix时间戳 * 1000
Date.parse() 将时间字符串转为时间戳。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
console.log(Date.now());
console.log(Date.parse("2020 01 31 12:00:00"));
</script>
</body>
</html>
将时间戳转化为时间字符串
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
// 不是unix时间戳,是unix时间戳*1000
var stamp = Date.now();
var date = new Date(stamp);
console.log(date.getYear()+1900);
console.log(date.getMonth()+1);
console.log(date.getDate());
console.log(date.getHours());
console.log(date.getMinutes());
console.log(date.getSeconds());
</script>
</body>
</html>