您的当前位置:首页正文

JavaScript数据类型的介绍

来源:独旅网

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视频教程栏目!

显示全文