Die von Dekoratoren am Verhalten einer Klasse vorgenommenen Änderungen erfolgen beim Kompilieren des Codes und nicht zur Laufzeit. Dies bedeutet, dass Dekorateure Code während der Kompilierung ausführen können. Mit anderen Worten, der Dekorator ist im Wesentlichen eine Funktion, die zur Kompilierungszeit ausgeführt wird.
Ich habe folgende Fragen:
Das obige Zitat lautet: 修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时
,这句中的编译时
、运行时
、发生
Was bedeuten sie?
修饰器本质就是编译时执行的函数
,这里的执行
和问题一中的发生
Bedeutet es dasselbe?
Wo werden Modifikatoren im Allgemeinen verwendet?
Die Erklärung im Buch ist eher vage. Könnten Sie es bitte im Detail erklären?
编译时,可以大致理解为,在代码开始运行之前,JS引擎将代码转化成机器可以运行的操作的时候。也就是说,这个过程无法在运行时候加以干涉的,因为它在开始运行之前就已经完成了。
而运行时,则是指你代码编译以后机器可以运行的操作开始运行时,也就是你写的那些东西,从机器操作变成了你能实际在电脑上看到的东西的时候。
至于发生,并没有特殊含义,就是指这些改变是在JS引擎将代码转化为机器操作过程中完成的。
执行和发生,大致可以认为是因和果的关系。改变,一般搭配的动词是“发生”,函数,一般搭配的词是“执行”。发生强调的是前后状态的对比,也就是说,因为发生了某件事,导致之后和之前不同了。而执行则侧重过程,执行一个操作,也就是将操作里每个步骤都做一遍,并没有刻意去注重前后是否有不同。所以,这边应该是修饰器=编译时执行的函数,这个函数执行之后导致的结果是类行为有所改变。
既然,上面说了,是对类行为的改变,所以修饰器一般用在类声明时候对类里面方法和属性的修饰。
说白了,代码大体分编译阶段和运行阶段,你可以理解成编译阶段把代码解析成一个树,到了运行阶段时,按照编译形成的树进行运行。你可以在github上搜索一下core-decorators.js,这个库就是一个修饰器的实例。