目录
什么是内置对象
javaScript中一切皆对象,对象的划分
JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象
原生对象:Object,Function ,Array, String, Date, Boolean, Number,RegExp,Error
内置对象:Global 全局( window,documet),Math 内置对象的API都是用内置对象直接调用
的
宿主对象:DOM BOM
基本数据类型结构相对单一,操作都是在栈区进行的,复杂数据类型都在堆区进行存储
内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(内置对象最大的优点就是帮助我们快速开发)
JavaScript提供了多个内置对象:Math、Date , Array、string等
Math
Math数学对象 不是一个构造函数 ,所以我们不需要new 来调用 而是直接使用里面的属性和方法即可
数学函数 所有的API都是 Math.方法();
- Math.abs(数值); 去绝对值
- Math.max(数值1,数值2,...); 求当前数据中最大值
- Math.min(数值1,数值2,...); 求当前数据中最小值
- Math.round(数值); 四舍五入
- Math.ceil(数值); 向上取整
- Math.floor(数值);向下取整
- Math.pow(n,m);n的m次幂
- Math.sqrt(数值); 开平方根
- Math.random(); 生成[0-1)左闭右开区间的随机小数
// 1,Math
// Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math 不是一个函数对象。
// Math 用于 Number 类型。它不支持 BigInt。
// 与其他全局对象不同的是,Math 不是一个构造器。Math 的所有属性与方法都是静态的。
// 引用圆周率的写法是 Math.PI,调用正余弦函数的写法是
// Math.sin(x),x 是要传入的参数。Math 的常量是使用 JavaScript 中的全精度浮点数来定义的。
console.log(Math.PI);
console.log(Math.max(-1, -3, -2));
// 返回给定的一组数字中的最大值。如果给定的参数中至少有一个参数无法被转换成数字,则会返回 NaN。如果有任一参数不能被转换为数值,则结果为 NaN。
var x = 10, y = -20;
console.log(Math.min(x, y));
console.log(Math.abs(-1));
console.log(Math.abs('-1'));
// Math.floor() 返回小于或等于一个给定数字的最大整数。Note: 可以理解 Math.floor()为向下取整
console.log(Math.floor(2.5));
// Math.ceil() 函数返回大于或等于一个给定数字的最小整数。
console.log(Math.ceil(96.6));
// Math.round() 取值为四舍五入最接近的值
console.log(Math.round(1.5));
console.log(Math.round(-1.5));
// Math.random() 函数返回一个随机浮点数, 伪随机数在范围从0到小于1,也就是说,从0(包括0)往上,但是不包括1(排除1)[0,1),
//然后您可以缩放到所需的范围。实现将初始种子选择到随机数生成算法;它不能被用户选择或重置。
console.log(Math.random());
封装函数和数学函数的区别
// 利用对象封装自己的数学对象 里面有 PI 最大值和最小值
var myMath = {
PI: 3.141592653,
max: function() {
var max = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
},
min: function() {
var min = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (arguments[i] < min) {
min = arguments[i];
}
}
return min;
}
}
console.log(myMath.PI);
console.log(myMath.max(1, 5, 9));
console.log(myMath.min(1, 5, 9));
例子
console.log(Math.abs(8));//8
console.log(Math.abs(-8));//8
console.log(Math.abs(1)); // 1
console.log(Math.abs(-1)); // 1
console.log(Math.abs('-1')); // 隐式转换 会把字符串型 -1 转换为数字型
console.log(Math.abs('pink')); // NaN
console.log(Math.max(-8, 10, 20, 1000));//1000
console.log(Math.max(1, 99, '老师')); // NaN
console.log(Math.max()); // -Infinity
console.log(Math.min(-8, 10, 20, 1000));//-8
console.log(Math.round(10.29));//10
console.log(Math.round(10.49));//10
console.log(Math.round(10.59));//11
// (1) Math.floor() 地板 向下取整 往最小了取值
console.log(Math.floor(1.1)); // 1
console.log(Math.floor(1.9)); // 1
// (2) Math.ceil() ceil 天花板 向上取整 往最大了取值
console.log(Math.ceil(1.1)); // 2
console.log(Math.ceil(1.9)); // 2
// (3) Math.round() 四舍五入 其他数字都是四舍五入,但是 .5 特殊 它往大了取
console.log(Math.round(1.1)); // 1
console.log(Math.round(1.5)); // 2
console.log(Math.round(1.9)); // 2
console.log(Math.round(-1.1)); // -1
console.log(Math.round(-1.5)); // 这个结果是 -1
console.log(Math.ceil(10.1));//11
console.log(Math.floor(10.9));//10
console.log(Math.pow(2, 4));//16
console.log(Math.sqrt(64));//8
console.log(Math.sqrt(125));
console.log(Math.random());
随机数函数封装
//作用:生成某个范围的随机整数
//para:参数
// min:小值
// max:大值
// @return 随机数值
// 1.Math对象随机数方法 random() 返回一个随机的小数 0 =< x < 1
// 2. 这个方法里面不跟参数
// 3. 代码验证
console.log(Math.random());
// 4. 我们想要得到两个数之间的随机整数 并且 不包含这2个整数
function getRandom(min,max){
return Math.round(Math.random()*(max-min)+min);
}
// 4. 我们想要得到两个数之间的随机整数 并且 包含这2个整数
// Math.floor(Math.random() * (max - min + 1)) + min;
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandom(1, 10));
// 5. 随机点名
var arr = ['张三', '张三丰', '张三疯子', '李四', '李思思', 'pink老师'];
// console.log(arr[0]);
console.log(arr[getRandom(0, arr.length - 1)]);
猜数字游戏
// 猜数字游戏
// 1.随机生成一个1~50 的整数 我们需要用到 Math.random() 方法。
// 2.需要一直猜到正确为止,所以需要一直循环。
// 3.while 循环更简单
// 4.核心算法:使用 if else if 多分支语句来判断大于、小于、等于。
// 要求用户猜 1~50之间的一个数字 但是只有 10次猜的机会
function getRandom(min,max){
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var random = getRandom(1,50);
var sum = 0;
while(true){
var num = prompt('请输入1-50之间一个数字:');
if(num > random){
alert('你猜大了');
}else if(num < random){
alert('你猜小了');
}else{
alert('你猜对了');
break;
}
alert('你还有'+(10-(++sum))+'次机会');
if(sum == 10){
alert('你的次数用完了');
break;
}
}