JavaScript基础笔记
1.内置对象
什么是内置对象:
Javascript中的对象分为3种:自定义对象、内置对象、浏览器对象。
前两种对象是js基础内容,属于ECMAScript,第三种浏览器对象属于js独有的。js apl讲解内置对象就是指js语言自带的一些对象,这些对象供开发者使用,或是提供一些最基本而且必要的功能,最大的优点是帮助我们快速开发。
JavaScript提供多个内置对象:Math、Date、Array、String等
Math对象
Math对象属性
Math对象方法
获取指定范围内的随机整数:
日期对象
Date对象和Math对象不一样,Date是一个构造函数,所以使用时需要实例化后才能使用其中具体方法和属性。Date 实例用来处理日期和时间
创建日期对象的方法:
to开头的方法时间转为字符串
to开头的方法是将时间转换为字符串
get开头的方法是获取时间和日期值
日期转换方法
set开头的方法是设置时间和日期值
2.Js数组对象的定义赋值以及方法
定义数组
var m=new Array();
var n=[];
数组的赋值
var m=new Array(2); 一个值表示数组length
var m=new Array(2,3,4,5); 多个值表示数组赋值
数组对象的属性
数组名称.length;
数组对象的常用方法
数组转化为string join()
var m=new Array(2,3,4,5);
console.log(m.join("|"));
结果: 2|3|4|5
数组翻转 reverse()
var m=new Array(2,3,4,5);
console.log(m.reverse());
结果:5 4 3 2
数组的截断 slice()
slice(start.index, end.index); 对原数组没有影响 索引位不取大
var m=new Array(2,3,4,5);
console.log(m.slice(0, 3),m);
结果:(2,3,4) (2,3,4,5)
数组的截断 splice()
splice(start.index , length); 对原数组有影响
var m=new Array(2,3,4,5);
console.log(m.splice(1, 3),m);
结果:(3,4,5) (2)
数组增加元素 push() 后
var m=new Array(2,3,4,5); 返回length
console.log((m.push(6)),m);
结果: 5 (2,3,4,5,6)
数组增加元素 unshift() 前
var m=new Array(2,3,4,5);
console.log(m.unshift(6 ,23),m);
结果: 6 (6,23,2 ,3,4,5)
数组删除元素 pop() 后
var m=new Array(2,3,4,1);
console.log(m.pop(),m); 返回删除值
结果:1 ,(2,3,4)
数组删除元素 shift() 前
var m=new Array(2,3,4,1);
console.log(m.shift(),m);
结果: 2 ,(3,4,1)
3.字符串概念
字符串概念:所有带单引号和双引号的叫做字符串 字符串的数据类型:字符串既是基本数据类型,又是复合数据类型。 字符串存储在内存里【只读数据段】的地方。字符串的变量里存储的是字符串的地址。 【注】使用起来没有任何区别。 【注】字符串一旦被声明,就没有办法被修改。如果你要修改字符串,只能销毁重新复制。
字符串声明方法
1、通过new声明 参数可以是任意数据类型,最终生成字符串
var str1 = new String(1000);
alert(typeof str1); //object
2、可以省略new运算符
var str2 = String("heloo");
alert(typeof str2); //string
3、直接通过字符串常量赋值 用第三种比较多,第三种方便
var str3 = "hello world";
alert(typeof str3); //string
字符串属性
字符串.length
【注】输出字符串中字符的个数,计数的时候一个汉字,相当于一个字符。
【注】utf-8编码里面 通过3个字符表示一个汉字。
返回字符串中字符
我们可以通过下标的方式访问
str[0]
*/
var str = "hel我l";
alert(str.length);// 5
var str = "hel我l";
alert(str[1]);// e
str[1] = "x"; //修改e为x
alert(str);// hel我l 修改失败 说明字符串不能被修改
字符串的不可变
指的是里面的值不可变,虽然看上去可以改变内容但其实是地址变了,内存中新开辟了一个内存空间。
当重新给字符串变量赋值的时候变量之前保存的字符串不会被修改,依然在内存中重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变。
由于字符串的不可变,在大量拼接字符串的时候会有效率问题
4.简单数据和复杂数据的概念
原始数据类型: number,string,boolean,undefined, null,object
基本类型(简单类型),值类型: number,string,boolean
复杂类型(引用类型):object
空类型:undefined,null
值类型的值在哪一块空间中存储? 栈中存储
引用类型的值在哪一块空间中存储?对象在堆上存储,地址在栈上存储
var num=10;//值类型,值在栈上
var obj={};//复杂类型,对象在堆,地址(引用)在栈
值类型之间传递,传递的是值
引用类型之间传递,传递的是地址(引用)
值类型作为函数的参数,传递的是值
引用类型作为函数的参数,传递的是地址
function Person(name,age,salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
function f1(person) {
person.name = “ls”;
person = new Person(“aa”,18,10);
}
function Person(name,age,salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
function f1(person) {
person.name = "ls";
person = new Person("aa",18,10);
}
var p = new Person("zs",18,1000);
console.log(p.name);//zs
f1(p);
console.log(p.name);//is