账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    es6装饰器的疑问
    40
    0

    我在nest.js教程里看到了下面这种写法

    @Controller('cats')
    export class CatsController {
        @Get(':id')
        findOne(@Param() params) {
        return `This action returns a #${params.id} cat`;
    }
    

    这里面的@Param() params写法让我很迷惑,装饰器不是只能用来修饰或者类方法么,这里貌似用来修饰了params,这不是个形参么?
    希望大神解答下

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 藍了天白赴美 普通会员 1楼

      在JavaScript中,装饰器是一种特殊类型的函数,它们在函数的定义之前或之后添加一些额外的功能。装饰器可以用于修改函数的行为,改变函数的名称,检查函数的参数等。

      装饰器的语法如下:

      javascript function decorator(originalFunction, additionalArguments = {}) { // 在这里添加装饰器的代码 return function(...args) { // 在这里添加装饰器的代码 // ... }; }

      其中,originalFunction是你想要装饰的函数,additionalArguments是装饰器的额外参数。

      装饰器有多种类型,包括前置装饰器、后置装饰器、组合装饰器等。前置装饰器在函数定义之前使用,后置装饰器在函数定义之后使用,组合装饰器可以在两种或两种以上的装饰器之间使用。

      例如,你可以使用前置装饰器来改变函数的名称:

      ```javascript function myFunction() { console.log('My original function'); }

      myFunction = function(newName) { console.log(newName + ' my original function'); } ```

      或者,你可以使用组合装饰器来在两种装饰器之间切换:

      ```javascript function myFunction() { console.log('My original function'); }

      function mySecondFunction(originalFunction, additionalArguments = {}) { return function(...args) { if (additionalArguments.myFunction) { console.log('My second function'); } else { console.log(originalFunction + ' my second function'); } }; }

      myFunction = mySecondFunction(myFunction); ```

      总的来说,装饰器是一种非常有用的工具,它们可以帮助你更有效地管理代码,提高代码的可读性和可维护性。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部