博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 的Decorator 装饰器介绍
阅读量:6003 次
发布时间:2019-06-20

本文共 1320 字,大约阅读时间需要 4 分钟。

Angular大量使用了JS的装饰器特性,先看

使用babel转换

步骤 :

  1. npm install -g babel-cli
  2. npm init; npm install --save-dev babel-plugin-transform-decorators-legacy
  3. babel --plugins transform-decorators-legacy 1.js > 1.es5.js

例1

@eatclass Person {  constructor() {}}function eat(target, key, descriptor) {  console.log('吃饭');  console.log(target);  console.log(key);  console.log(descriptor);  target.prototype.act = '我要吃饭';}const jack = new Person();console.log(jack.act);

转换后

var _class;let Person = eat(_class = class Person {  constructor() {}}) || _class;function eat(target, key, descriptor) {  console.log('吃饭');  console.log(target);  console.log(key);  console.log(descriptor);  target.prototype.act = '我要吃饭';}const jack = new Person();console.log(jack.act);// 吃饭// [Function: Person]// undefined// undefined// 我要吃饭

例2

function mixins(...list) {  return function (target) {    Object.assign(target.prototype, ...list);  };}const Foo = {  foo() { console.log('foo') }};@mixins(Foo)class MyClass {}let obj = new MyClass();obj.foo() // "foo"

babel 后

var _dec, _class;function mixins(...list) {  return function (target) {    Object.assign(target.prototype, ...list);  };}const Foo = {  foo() {    console.log('foo');  }};let MyClass = (_dec = mixins(Foo), _dec(_class = class MyClass {}) || _class);let obj = new MyClass();obj.foo(); // "foo"

转载地址:http://wqdmx.baihongyu.com/

你可能感兴趣的文章
Windows系统因“CredSSP加密Oracle修正”无法远程连接
查看>>
9、链表 & 状态机 & 多线程
查看>>
BZOJ4556:[TJOI\HEOI2016]字符串(后缀数组,主席树,二分,ST表)
查看>>
杭电 Problem1787 GCD Again
查看>>
智能硬件类产品测试项目总结
查看>>
Hashmap与Hashtable的区别及Hashmap的原理
查看>>
int指令
查看>>
Android编程实现点击链接打开APP功能示例
查看>>
ASP.NET开发中主要的字符验证方法-JS验证、正则表达式、验证控件、后台验证
查看>>
C# 实现截图软件功能
查看>>
MySql入门知识(一)
查看>>
CentOS7安装 VirtualBox虚拟机
查看>>
三维数组
查看>>
mysql类的封装
查看>>
php 正则匹配出a标签级a标签中的内容
查看>>
iOS ReactiveCocoa 最全常用API整理
查看>>
0621补-MVC的基础整理
查看>>
一种简单的处理大流量访问的方法
查看>>
CSS常见样式
查看>>
swift UICollectionView使用
查看>>