装饰器不会将属性添加到正在装饰的类中。我如何解决它?

时间:2019-03-27 08:54:06

标签: javascript decorator

我试图了解装饰器如何在javascript中工作。我浏览了很多有关它的文章,但是没有一篇文章能很好地解释这个概念。

我从我读过的一篇文章中尝试了装饰器的基本示例。这是codepen link。 我定义了一个称为超级英雄的装饰器函数。我正在用它装饰班级“ MySuperHero”。据我所知,装饰器应将属性添加到类中。但是当我执行console.log时,它显示为未定义。

[_sponsoredCollectionView reloadData];

dispatch_async(dispatch_get_main_queue(), ^{
                        [self.sponsoredCollectionView performBatchUpdates:^{
                            _sponsoredCollectionViewHeightConstraint.constant = _sponsoredCollectionView.collectionViewLayout.collectionViewContentSize.height + 5;//_sponsoredCollectionView.contentSize.height + 5;
                        } completion:nil];
                    });

2 个答案:

答案 0 :(得分:1)

您应使用babel --optional es7.decorators(baby CLI)启用装饰器。 由于仍然是一项提案,因此可以找到更多信息here

希望这会有所帮助!

答案 1 :(得分:0)

JavaScript本身不支持@装饰器,您必须使用babel,请遵循链接中提到的安装步骤:https://babeljs.io/docs/en/babel-plugin-proposal-decorators