函数
定义
:function functionName(参数){ 方法体};
调用
:
- 直接调用:myFunction( );函数不属于任向 对象。
- 作为方法来调用函数:myObject. fullName()。
fullName 方法是一个函数。该函数属于对象。myObject 是函数的拥有者。被称为this
的事物,是“拥有”这段 JavaScript 代码的对象。 - 构造函数:new调用构造器建立新对象x
// 这是函数构造器:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
// 创建了一个新对象:
var x = new myFunction(“Bill”, “Gates”);
x.firstName; // 会返回 “Bill”
构造器中this没有值,调用函数时this为新对象。
this关键词
在 JavaScript 中,被称为 this
的事物,指的是“拥有”当前代码的对象。
this
的值,在函数中使用时,是“拥有”该函数的对象。
请注意 this
并不是变量。它属于关键词。您无法改变 this
的值。function的this指向
函数表达式
//函数调用
getSum();
// 函数声明
function getSum(num1, num2) {
var total = num1 + num2;
return total;
}
// 函数表达式
var getSum = function(num1, num2) {
var total = num1 + num2;
return total;
};
getSum();
//定义后调用
函数说明结尾可不加分号
方法重用
Call()
call()
方法是预定义的 JavaScript 方法。
语法:
fn.call(obj,1,2);
A、call() 函数中的第一个参数表示:想让 this 指向的对象 (obj);
B、call() 函数中的第二及以后参数表示:传进去的实参;
可以改变this指向,可以用来调用所有者对象作为参数的方法。
Apply()
语法: fn.call(obj,[1,2])
不同之处是:
call() 方法分别接受参数。
apply() 方法接受数组形式的参数。
闭包
当两个函数彼此嵌套时,内部的函数就是闭包。闭包的形成条件是内部函数需要通过外部函数 return 给返回出来。
function funOne(){ // 外部函数
var num = 0; // 局部变量
function funTwo(){ // 内部函数
num++;
return num;
}
return funTwo;
}
var fun = funOne(); // 返回函数 funTwo
fun(); // 输出:1
fun(); // 输出:2
fun(); // 输出:3
fun(); // 输出:4
用途:在 JavaScript 中,如果一个对象不再被引用,那么这个对象就会被 GC 回收,否则这个对象会一直保存在内存中。在上面的例子中,内部函数 funTwo() 定义在外部函数 funOne() 中,因此 funTwo() 依赖于 funOne(),而全局变量 fun 又引用了 funTwo(),所以 funOne() 间接的被 fun 引用。因此 funOne() 不会被 GC 回收,会一直保存在内存中
事件
定义
:当用户与网页进行交互时发生的事情,例如单机某个链接或按钮、在文本框中输入文本、按下键盘上的某个按键、移动鼠标等等。
事件 | 描述 |
---|---|
鼠标、键盘事件 | onclick |
ondblclick | 双击鼠标时触发此事件 |
onmousedown | 按下鼠标时触发此事件 |
onmouseup | 鼠标按下后又松开时触发此事件 |
onmouseover | 当鼠标移动到某个元素上方时触发此事件 |
onmousemove | 移动鼠标时触发此事件 |
onmouseout | 当鼠标离开某个元素范围时触发此事件 |