js 基础 内置对象和方法 简单数据和复杂数据的传参

本文详细介绍了JavaScript中的内置对象如Math和Date,以及数组和字符串的操作方法,包括添加删除元素、排序、查找等。同时,讨论了简单数据类型和复杂数据类型的传递特性,强调了字符串的不可变性及其在性能上的影响。
摘要由CSDN通过智能技术生成

JavaScript中的对象分为三种:自定义对象、内置对象、浏览对象。

内置对象

JavaScript提供了多个内置对象:Math、Date、Array、String。

Math

Math对象不是构造函数,它具有数学常数和函数的属性和方法,跟数学相关度的运算可以使用Math中的成员。

属性/方法名功能
Math.Pl圆周率
Math.floor()向下取整
Math.ceil()向上取整
Math.round()四舍五入版,就近取整.注意-3.5结果是-3
Math.ads()绝对值
Math.max() / Math.min()求最大和最小
Math.random()获取范围在[0,1)内的随机数
获取指定范围内的随机数:
function getRandom(min, max) {
	return Math.floor(Math.random() * (max - min + 1)) + min;
}
Date对象,

日期函数。Date是一个构造函数,所以使用时需要实例化后才能使用其中具体方法和属性。

实例化:
var now=new Date();
获取指定日期的对象
var future=new Date('2020/2/2');

Date实例化的方法和属性

方法说明代码
getFullYear()获取当年dObj.getFullYear()
getMonth()获取当月dObj.getMonth()
getDate()获取当天日期dObj.getDate()
getDay()获取星期几dObj.getDay()
getHours()获取当前小时dObj.getHours()
getMinutes()获取当前分钟dObj,getMinutes()
getSeconds()获取当前秒数dObg.getSeconds()
// 实例化Date对象
var now = new Date();
// 1. 用于获取对象的原始值
console.log(date.valueOf())
console.log(date.getTime())
// 2. 简单写可以这么做
var now = + new Date();
// 3. HTML5中提供的方法,有兼容性问题
var now = Date.now();
数组:

数组的创建有两种方法:

1.var zrr=[1,2,'tset',true]; //字面量方法
2.var arr=new Array();   // new Array()
//2  创建出来的是一个空数组,如果需要使用构造函数Array创建非空数组,可以在创建数组时传入参数。
  //如果只传入传入一个参数,则参数规定了数组的长度。
  //如果传入了多个参数,则参数称为数组的元素。

instanceof关键字可以判断一个对象是否时某个构造函数的实例。


Array.isArray()可以判断一个对象是否为数组,

var arr = [1, 23];
var obj = {};
console.log(Array.isArray(arr)); // true
console.log(Array.isArray(obj)); // false

添加和删除数组元素的方法

方法名说明返回值
push(参数1,…)在数组末尾添加一个或多个元素。返回新的数组长度
pop()删除数组最后一个元素,把数组长度-1.返回它删除的值
unshift(参数1,…)在数组开头添加一个或多个元素。返回新的长度
shift()删除数组的第一个元素,数组长度减一返回第一个元素的值

数组排序:
reverse()方法可以颠倒数组中元素的顺序,该方法时直接改变原来的数组,并返回新的数组。
sort()方法可以对数组中的元素进行排序,该方法会改变原来的数组,返回新的数组

sort()方法需要传入参数来设置升序、降序排序
function(a,b){ return a-b;} 升序
function(a,b){ return b-a;} 降序

indexOf() 可以在数组中查找给定元素的第一个索引。元素不存在返回-1.
lastlndexOf() 可以在数组中查找最后一个索引。元素不存在返回-1

concat() 可以连接两个或多个数组,不影响原数组。返回一个新数组。
slice() 可以截取数组一部分元素 slice(begin,end) 返回被截取部分的新数组。
splice() 可以让数组删除指定的元素splice(第几个元素,要删除的个数); 返回被删除项目的新数组,这个会影响原数组。

字符串对象

JavaScript还提供了三个特殊的引用类型:String、Number、和Boolean。
基本数据类型是没有属性和方法的,而对象才有属性和方法。
基本包装类型就是把简单数据包装成复杂数据类型,这样简单数据就可以用属性和方法了。

var str = 'andy';
console.log(str.length);
 js 把基本数据类型包装为复杂数据类型,其执行过程如下 :
// 1. 生成临时变量,把简单类型包装为复杂数据类型
var temp = new String('andy');
// 2. 赋值给我们声明的字符变量
str = temp;
// 3. 销毁临时变量
temp = null;

字符串的不可变是指里面的值不可变,最然表面上可以发改变内容,但其实是地址变了,在内存中开辟了一个新的内存空间。
当重新给字符串变量赋值的时候,变量之前保存的字符串不会被修改,依然在内存中重新给字符串
赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变。由于字符串的不可变,在大量拼接字符串的时候会有效率问题。
indexOf(‘要查找的字符’,开始的位置); 和 lastlndexOf() 方法都可以根据字符返回位置
charAt(index) 、 charCodeAt(index) 、 str[index] 方法都可以根据位置返回字符,
charAt(index) 返回指定位置的字符,index字符串的索引号。 str。charAt(0)
charCodeAt(index) 获取指定位置处字符的ASCII码 . str.charCodeAt(0)
str[index] 获取指定位置的字符。 html,IE8+支持 和 charAt() 特效。

字符串的简单操作

substr(steart,length) 从 steart 位置开始,取length个数。
substring(start,end) 从 start 位置开始,截取到end位置。
concat(str1,str2,…) 用于连接两个或多个字符串。
slice(start,end) 从 start 位置开始截取刀end位置,
replace()方法 用于在字符串中用一些字符替换另一些字符,字符串.replace(被替换的字串串,要替换的字符串)
spalit()方法 用于切分字符串,它可以将字符串切分成数组,返回一个新数组。 字符串.split(“分割字符”)

简单数据类型和复杂数据类型

简单数据类型:在储存时变量中储存的是值本身,包括string、number、boolean、undefined、null.
复杂数据类型:在储存时变量中储存的仅仅是地址,通过 new 关键字创建的对象(系统对象、自定义对象),Object、Array、Date。

简单数据类型传参:函数的形参可以看做是一个变量,把一个值类型作为参数传给函数时的形参时,其实是把变量在栈空间里的值复制了一份给形参,在方法内部对形参做任何修改,都不会影响到外部变量。

function fn(a) {
	a++;
	console.log(a);
}
var x = 10;
fn(x);
console.log(x);//11

复杂数据类型传参:函数的形参可以看做是一个变量,当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,形参和实参操作的是同一个堆地址,操作的同步一个对象。

function Person(name) {
	this.name = name;
}
function f1(x) { // x = p
	console.log(x.name); 
	x.name = "张学友";
	console.log(x.name);
}
var p = new Person("刘德华");
console.log(p.name); 
f1(p);
console.log(p.name); 

刘德华
刘德华
张学友
张学友
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值