es6 getter setter
https://stackoverflow.com/questions/34517538/setting-an-es6-class-getter-to-enumerable
1. 我要 getter 没有要暴露
class A {
get age() {
return 11;
}
} console.log(Object.keys(new A())); // []
翻译 es5
var A = /** @class */ (function () {
function A() {
}
Object.defineProperty(A.prototype, "age", {
get: function () {
return 11;
},
enumerable: true,
configurable: true
});
return A;
}());
console.log(Object.keys(new A())); // []
由于定义到了 prototype 上,所以 object keys 就找不到了。
2. 我要 getter 要暴露
class A {
constructor() {
Object.defineProperty(this, 'age', {
get: function () {
return 11;
},
enumerable: true
})
}
readonly age: number; // 为了智能提示
} console.log(Object.keys(new A())); // ['age']
直接定义到了对象上边而不是 prototype
3. 我要 getter setter 不要暴露全部
by default 是会出现 private _age 的
class A {
private _age: number; get age() {
return this._age;
}
set age(value: number) {
this._age = value;
}
}
const a = new A();
a.age = 11
console.log(Object.keys(a)); // ['_age']
添加 define
class A {
constructor() {
Object.defineProperty(this, '_age', {
enumerable: false,
writable: true
});
}
private _age: number; get age() {
return this._age;
}
set age(value: number) {
this._age = value;
}
} const a = new A();
a.age = 15;
console.log(Object.keys(a));
console.log(a.age);
4. 我要 getter setter 暴露但不要暴露 private
class A {
constructor() {
Object.defineProperty(this, '_age', {
enumerable: false,
writable: true
}); Object.defineProperty(this, 'age', {
enumerable: true,
get: function () {
return this._age;
},
set: function (value: number) {
this._age = value;
}
}); }
private _age: number;
age: number;
} const a = new A();
a.age = 15;
console.log(Object.keys(a));
console.log(a.age);
es6 getter setter的更多相关文章
- 懒加载(getter\setter理解)
为什么要用懒加载 1.首先看一下程序启动过程:(如图) 会有一个mian的设置,程序一启动会加载main.storyboard main.storyboard又会加载箭头所指的控制器 控制器一旦加载, ...
- iOS getter setter
getter setter 给成员变量起名字用的 setter方法 设置成员变量值 1. setter 方法一定是对象方法 不可能是类方法 2.一定没有返回值 3. 以set开头,并且set后面跟上需 ...
- Lombok(1.14.8) - @Getter, @Setter, @ToString, @EqualsAndHashCode & @Data
@Getter / @Setter @Getter 和 @Setter,分别实现了 Gette r和 Setter 方法. package com.huey.hello.bean; import ja ...
- Java程序猿JavaScript学习笔记(4——关闭/getter/setter)
计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...
- lombok @Getter @Setter 使用注意事项
lombok是一个帮助简化代码的工具,通过注解的形式例如@Setter @Getter,可以替代代码中的getter和setter方法,虽然eclipse自带的setter.getter代码生成也不需 ...
- lombok(@Getter&@Setter)
Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法. 官方地址:https://project ...
- 自动生成getter setter
如何使用java黑魔法给一个entity生成getter,setter方法? 由于java是一门静态语言,要给一个类动态添加方法,看似是不可能的.但牛B的程序员会让任何事情发生.我只知道有两种方式可以 ...
- 为什么要使用getter/setter
变量私有化的好处 1. 在setter中可以加入合法性检查,比如设置颜色的函数中,对于RGB颜色要判断其值在0~255之间. 2. 更新与被设置变量相关的其它变量的值,比如在一个潜水艇模拟系统中,改变 ...
- 反射工具类.提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,被AOP过的真实类等工具函数.java
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; import org.ap ...
随机推荐
- mybatis 对string类型判断比较 group case when then 综合
[quote] 特别注意两点 一个是where 的用法group的用法 case when的用法 <if test='hasLoanApplicationFlag == "1" ...
- JavaScript设计模式—代理模式
代理模式介绍 使用者无权访问目标对象,中间加代理,通过代理做授权和控制 代理(proxy)是一个对象,它可以用来控制对另外一个对象的访问: 代理对象和本体对象实现了同样的接口,并且会把任何方法调用传递 ...
- scarpy crawl 爬取微信小程序文章(将数据通过异步的方式保存的数据库中)
import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider ...
- crawler 使用jQuery风格实现
以前写过java版的crawler,最近看了Groovy的XmlSlurper,效果还是不太满意,直到这篇文章启发了我:how-to-make-a-simple-web-crawler-in-java ...
- CISCO实验记录二:路由器基本操作
一.路由器基本操作要求 1.设置路由器本地时间 2.启用光标跟随 3.设置路由器标语信息和描述信息 4.为接口配置描述信息 5.快速恢复接口到出厂设置 二.路由器基本操作命令 1.设置路由器本地时间 ...
- 使用 in_memory 工作空间的注意事项
来自:https://pro.arcgis.com/zh-cn/pro-app/tool-reference/appendices/using-the-in-memory-output-workspa ...
- pm2 配合log4js处理日志
1.pm2启动时通常会发现log4js记录不到日志信息: 2.决解方案,安装pm2的pm2-intercom进程间通信模块 3.在log4js的配置文件logger.js里添加如下命令: pm2: t ...
- 1.3 Go语言基础之数据类型
Go语言中有丰富的数据类型,除了基本的整型.浮点型.布尔型.字符串外,还有数组.切片.结构体.函数.map.通道(channel)等.Go 语言的基本类型和其他语言大同小异. 一.整型 1.1 基本类 ...
- linux安装jdk1.8之后报错Error: dl failure on line 893的解决办法
问题描述:安装jdk1.8之后,输入java -version查看安装是否成功之后,报错: 报错如下: Error: dl failure on line 893 Error: failed /u ...
- 指定pip清华源
临时指定: pip install cefpython3 -i https://pypi.tuna.tsinghua.edu.cn/simple 一直使用:pip的配置文件为%HOME%/pip/pi ...