《JavaScript高级程序设计(第3版)学习笔记9 js函数(下)》一文主要讲解了 JavaScript 中函数的进阶应用,包括函数作为对象、闭包、函数自执行等内容,下面是具体的攻略:
1. 函数作为对象
在 JavaScript 中,函数同时也是对象,因此它们可以拥有属性和方法。函数的属性通常是直接在函数对象上定义,而方法则是定义在函数的原型对象上。
例如,在一个自定义的函数对象上定义属性和方法的示例代码如下:
// 定义一个自定义函数对象 MyFunction
function MyFunction() {}
// 在 MyFunction 上定义一个属性
MyFunction.myProperty = "Hello World!";
// 在 MyFunction.prototype 上定义一个方法
MyFunction.prototype.myMethod = function() {
console.log(this.myProperty);
};
// 创建 MyFunction 的实例并调用 myMethod 方法
var myFuncObj = new MyFunction();
myFuncObj.myMethod(); // 输出 "Hello World!"
2. 闭包
闭包是指在一个函数内部创建另一个函数,并且内部函数可以访问外部函数的变量。这种特性使得闭包在实践中非常有用,因为它可以用来创建私有变量、分时函数等。
一个简单的闭包示例代码如下:
function createCounter() {
var counter = 0;
return function () {
return ++counter;
};
}
// 创建一个计数器并调用它的方法
var myCounter1 = createCounter();
console.log(myCounter1()); // 输出 1
console.log(myCounter1()); // 输出 2
// 创建另一个计数器并调用它的方法
var myCounter2 = createCounter();
console.log(myCounter2()); // 输出 1
console.log(myCounter2()); // 输出 2
这里的 createCounter() 函数返回了一个匿名函数,并且这个匿名函数可以访问 createCounter() 函数中的 counter 变量,因此每次调用匿名函数时都会使 counter 变量的值加 1。
3. 函数自执行
函数自执行是指在定义函数的同时立即调用它。这种技巧可以用来创建一些只需要一次性运行而不需要再次调用的代码块,例如:
(function () {
// 在这里定义一些只需要一次性运行的代码
console.log("Hello World!");
})();
这里的 (function () { ... })() 是一个函数自执行表达式,在定义函数的同时立即调用它。由于这个函数只需要运行一次,因此在定义它的时候就直接调用了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript高级程序设计(第3版)学习笔记9 js函数(下) - Python技术站