视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
JavaScript数据类型的介绍
2020-11-27 19:27:06 责编:小采
文档


Boolean

Boolean值很简单,就false和true两个值。但是很多人不能完全回答出,哪些值会被转换成false。

除了下面几个能够被转成false的值,其他都是true。

false
''
NaN
undefined
0, -0, +0
null

undefined 和 null

undefined表示一个变量被定义了,但是没有被赋值。null表示这个变量根本没被定义。总之,无论是undefined和null,他们基本上都是不能使用的值。

null类型有个特别的作用。比如有个对象,有很多属性,这时候你想把这个变量给标记为可以被垃圾回收了,那么就可以把它的值设置为null。

最熟悉的陌生人: 对象

我曾认为对象在js中是最简单的,而实际上,是我太天真。
// 定义一个对象,so easy
var boy = {
 name: 'wangduanduan'
}
var boy = {}
Object.defineProperty(boy, 'name', {
 writable: false,
 value: 'wdd'
})
boy.name = 'ddw' // 设置不会生效,boy.name的值还是wdd

对象的数据属性

数据属性默认值说明
configurabletrue表示这个属性能否用delete删除
enumerabletrue表示这个属性能否通过for in 循环遍历
writabletrue表示这个属性能否被修改
valueundefined表示这个属性的数据值

如果调用Object.defineProperty没有指定configurable, enumerable, writable,那么他们的默认值都是false。

访问器属性

访问器属性就是get, set让你可以在读取或者写入值时,做一层拦截。

var man = {
 _sex: 1
}
Object.defineProperty(man, 'sex', {
 set: function (v) {
 this._sex = v === '男' ? 1 : 0
 },
 get: function () {
 return this._sex === 1 ? "男" : "女"
 }
})
nam.sex // 男

想一想如果把上面的_sex改成sex会有什么问题?

// 这样写会有什么问题
var man = {
 sex: 1
}
Object.defineProperty(man, 'sex', {
 set: function (v) {
 this.sex = v === '男' ? 1 : 0
 },
 get: function () {
 return this.sex === 1 ? "男" : "女"
 }
})

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript视频教程栏目!

下载本文
显示全文
专题