JS的数据类型
目前js有八种数据类型:
- 数值(number):整数和小数(比如
1和3.14)。 - 字符串(string):文本(比如
Hello World)。 - 布尔值(boolean):表示真伪的两个特殊值,即
true(真)和false(假)。 undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值。null:表示空值,即此处的值为空。- 对象(object):各种值组成的集合。
- symbol:符号
- bigint:表示大于 `253 - 1` 的整数
object主要用法
对象(object)是 JavaScript 语言的核心概念,也是最重要的数据类型。
什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
声明对象例子:
var obj = {
foo(键): 'Hello'(值),
bar: 'World'
};
var obj = new Object({
foo(键): 'Hello'(值),
bar: 'World'
};
})
细节:
- 键名是字符串不是标识符,可以包含任意字符.
- 引号可以省略,省略之后只能写标识符.
- 就算引号省略了,键名还是字符串.
属性的增删改查
- 删
- delete obj.xxx或delete obj['xxx']
例子:
- 查(读)
- Object.keys(obj) 查自身的所有属性 例子:
- console.dir(obj) 查自身/共有的所有属性
- obj[key] 查看键的值 例子:
- obj.key 同上 例子:
3.修改或增加(已有属性则改,没有属性则增)
- 直接赋值
- 批量赋值
例子:
- 修改隐藏属性 objcet.create
__proto__不要去修改!!
'name' in obj和obj.hasOwnProperty('name') 的区别
in:in运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回true,否则返回false。它的左边是一个字符串,表示属性名,右边是一个对象。
var obj = { p: 1 };
'p' in obj // true
'toString' in obj // true
in运算符的一个问题是,它不能识别哪些属性是对象自身的,哪些属性是继承的。就像上面代码中,对象obj本身并没有toString属性,但是in运算符会返回true,因为这个属性是继承的。
这时,可以使用对象的hasOwnProperty方法判断一下,是否为对象自身的属性。
var obj = {};
if ('toString' in obj) {
console.log(obj.hasOwnProperty('toString')) // false
}
总结:'name' in obj他不能识别隐藏属性是否是自己的,例如toString属性.而hasOwnProperty可以识别哪些属性是自身的.