call和apply
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<script>
function fun(a,b) {
//alert(this);
console.log("a="+a);
console.log("b="+b);
}
//call()和apply()
//这两个方法都是函数对象的方法,需要通过函数对象来调用
//当对函数调用call()和apply()都会调用函数执行
//在调用call()和apply()可以将一个对象指定为第一个参数
//此时这个对象将会成为函数执行时的 this
//call () 方法可以将实参在对象之后依次传递
//apply () 方法需要将实参封装到一个数组中统一传递
//this 的情况:
// 1. 以函数形式调用时,this 永远都是 window
// 2. 以方法的形式调用时,this 是调用方法的对象
// 3. 以构造函数的形式调用时,this 是新创建的那个对象
// 4. 使用 call 和 apply 调用时,this 是指定的那个对象
var obj = {
name: "obj",
sayName:function() {
alert(this.name);
}
};
var obj2 = {
name: "obj2"
};
// obj.sayName.apply(obj2);
fun.call(obj,1,2);
</script>
</body>
</html>

arguments
在调用函数时,浏览器每次都会传递进两个隐含的参数
函数的上下文对象
封装实参的对象arguments
arguments是一个类数组对象(不是数组),它可以通过索引来操作数据,也可以获取长度
在调用函数时,我们所传递的实参都会在argument中保存
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<script>
//arguments.length可以用来获取实参的长度
//我们即使不定义形参,也可以通过argunments来使用实参,只不过比较麻烦
//arguments[0]表示第一个参数
//arguments[1]表示第二个参数
//它里边有一个属性叫做callee,这个属性对应一个函数对象,就是当前正在指向的函数的对象
function fun(a,b) {
console.log(arguments[1]);
console.log(arguments.callee==fun);
console.log(arguments instanceof Array);
console.log(arguments.length);
console.log(Array.isArray(arguments));
}
fun("hello",true);
</script>
</body>
</html>

Math
- Math和其他的对象不同,它不是一个构造函数;它属于一个工具类,不用创建对象,它里边封装了数学运算相关的属性和方法

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<script>
//Math
console.log(Math.PI);
//abs()
console.log(Math.abs(-10));
//ceil 对一个数向上取整
console.log(Math.ceil(5.3));
//floor 对一个数向下取整
console.log(Math.floor(5.8));
</script>
</body>
</html>

Date对象

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<script>
//Date对象
//在JS中使用Date对象来表示一个时间
//创建一个Date对象
//如果直接使用构造函数创建一个Date对象,则会封装为当前代码执行的时间
var d=new Date();
console.log(d);
//创建一个指定的时间,需要在构造函数中传递一个表示时间的字符串作为参数
//格式:月份/日/年份 时:分:秒
var d2=new Date("11/29/25 20:01:50");
console.log(d2);
//获取日期时几日
var date=d2.getDate();
var day=d2.getDay();
console.log("date="+date);
//一周中的某一天
console.log("day="+day);
</script>
</body>
</html>
