0%

闭包的实现

在JavaScript等支持一级函数的语言中,闭包通常是这样实现的:

  1. 函数嵌套:在一个函数内部定义另一个函数。
  2. 内部函数引用外部变量:内部函数访问了外部函数的变量。
  3. 外部函数返回内部函数:当外部函数执行完毕后,返回内部函数,这个内部函数仍然保留了对外部函数作用域的引用。
1
2
3
4
5
6
7
8
9
10
11
12
function outerFunction() {
var outer = 'I am outer';

function innerFunction() {
console.log(outer);
}

return innerFunction;
}

var closure = outerFunction(); // 返回内部函数,创建闭包
closure(); // 输出:I am outer

在这个例子中,innerFunction 是一个闭包,因为它访问了外部函数 outerFunction 的变量 outer。即使 outerFunction 已经执行完毕,但是由于 innerFunction 被返回并且保留了对 outer 的引用,所以 outer 仍然可以被访问。

阅读全文 »

  1. **组件方法中的 this**:

    1
    2
    3
    4
    5
    methods: {
    greet() {
    console.log(`Hello, ${this.name}!`); // this 指向组件实例
    }
    }
    • this 指向:组件实例。
  2. **箭头函数中的 this**:

    1
    2
    3
    4
    5
    methods: {
    greet: () => {
    console.log(`Hello, ${this.name}!`); // this 不指向组件实例,指向定义时的上下文(通常是 window)
    };
    }
    • this 指向:定义箭头函数时的上下文,通常在非模块化代码中是 window
阅读全文 »

序言:呜呼,天不生春,通用技术如万古长夜

女同学面前我春风得意,男同学面前我重拳出击

传说在开天辟地之时,诞生了一位通用技术祖先,他的名字是春。与其他通用技术老师不同,别的老师教科书里记载的是通用技术,而春的教科书里记载的却是仙术

阅读全文 »

多年以后,面对理发店,沈将军将会回想起通用技术祖先被学生批斗的那个遥远的下午。

“你被解雇了,春!”,一个领头的学生站在高台上,她的声音在操场上回荡,引起一片附和的喧嚣。

就在春老师微微愣神的瞬间,一个黄毛学生趁机跃起,灵巧地夺过了他那顶鸭舌帽,在手中把玩着。春光滑的头顶瞬间暴露在阳光下,反射出一道刺眼的光芒。顿时,欢笑声四散开来,操场上充满了快活的气息。

阅读全文 »