数据类型
JavaScript一共有8种数据类型,其中有7种基本数据类型:Undefined、Null、Boolean、Number、String、Symbol(es6新增,表示独一无二的值)和BigInt(es10新增)。
1种引用数据类型——Object(Object本质上是由一组无序的名值对组成的)。里面包含 function、Array、Date等。JavaScript不支持任何创建自定义类型的机制,而所有值最终都将是上述 8 种数据类型之一。
原始数据类型:直接存储在栈(stack)中,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储。
引用数据类型:同时存储在栈(stack)和堆(heap)中,占据空间大、大小不固定。引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
判断类型
- typeof 于原始类型来说,除了 null (object)都可以显示正确的类型。
- instanceof 判断对象的类型 (原理: 内部机制是通过判断对象的原型链中是不是能找到类型的 prototype)。
- constructor
console.log((2).constructor === Number); // true
console.log((true).constructor === Boolean); // true
console.log(('str').constructor === String); // true
console.log(([]).constructor === Array); // true
console.log((function() {}).constructor === Function); // true
console.log(({}).constructor === Object); // true
注意!如果我创建一个对象,更改它的原型,constructor随之变化
function Fn(){};
Fn.prototype=new Array();
var f=new Fn();
console.log(f.constructor===Fn); // false
console.log(f.constructor===Array); // true
字符串
es6: 字符串对象就新增了 .includes() 和 .repeat() 方法。
.includes()
替代以往判断内容 > -1 的方式
const string = 'food';
const substring = 'foo';
console.log(string.includes(substring)); // true
console.log(string.indexOf(substring) > -1);
substring()
用于提取字符串中介于两个指定下标之间的字符
stringObject.substring(start,stop)
// start 必填, stop: 选填
var str="Hello world!"
document.write(str.substring(3)) // lo world!
.repeat()
实现重复字符
'meow'.repeat(3); // 'meowmeowmeow'
match()
方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
语法
stringObject.match(searchvalue)
stringObject.match(regexp)
match() 方法将检索字符串 stringObject,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。
如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。除了这些常规的数组元素之外,返回的数组还含有两个对象属性。index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,input 属性声明的是对 stringObject 的引用。
如果 regexp 具有标志 g,则 match() 方法将执行全局检索,找到 stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串,则返回 null。如果找到了一个或多个匹配子串,则返回一个数组。不过全局匹配返回的数组的内容与前者大不相同,它的数组元素中存放的是 stringObject 中所有的匹配子串,而且也没有 index 属性或 input 属性。
示例:
var str="Hello world!"
document.write(str.match("world") + "<br />")
document.write(str.match("World1") + "<br />")
// world
// null
var str="1 plus 2 equal 3"
document.write(str.match(/\d+/g))
// 1,2,3
substr()
方法可在字符串中抽取从 start 下标开始的指定数目的字符。
stringObject.substr(start,length)
length 可选
var str="Hello world!"
document.write(str.substr(3)
// lo world!
document.write(str.substr(3,7)) 7:子串中的字符数。
//lo worl
eval()
可计算某个字符串,并执行其中的的 JavaScript 代码。
eval("x=10;y=20;document.write(x*y)")
document.write(eval("2+2"))
var x=10
document.write(eval(x+17))
200
4
27
trim()
去除字符串的头尾空格
不会改变原始字符串
toString()
方法可把一个逻辑值转换为字符串,并返回结果。
object
Object.keys()
定义:
ES5 引入了Object.keys方法,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键名。
- 传入对象,返回属性名
var data={a:1,b:2,c:9,d:4,e:5};
console.log(Object.keys(data));//["a", "b", "c", "d", "e"]
Object.keys(data).map((key,item)=>{
console.log(key,data[key]);//key=>属性名 data[key]=>属性值
});
- 传入字符串,返回索引
var str = 'ab1234';
console.log(Object.keys(obj)); //[0,1,2,3,4,5]
- 传入数组 返回索引
var arr = ["a", "b", "c"];
console.log(Object.keys(arr)); // console: ["0", "1", "2"]****
- 构造函数 返回空数组或者属性名
function Pasta(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
this.toString = function () {
return (this.name + ", " + this.age + ", " + this.gender);
}
}
console.log(Object.keys(Pasta)); //console: []
var spaghetti = new Pasta("Tom", 20, "male");
console.log(Object.keys(spaghetti)); //console: ["name", "age", "gender", "toString"]
Object.values()
Object.values方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键值。
Object.entries()
Object.entries方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键值对数组。
json
JSON.stringify()
JSON 的常规用途是同 web 服务器进行数据交换。
在向 web 服务器发送数据时,数据必须是字符串。
通过 JSON.stringify() 把 JavaScript 对象转换为字符串
JSON.parse()
JSON.parse() 方法用于将一个 JSON 字符串转换为对象
Number
toFixed()
方法可把 Number 四舍五入为指定小数位数的数字
var num = new Number(13.37);
num.toFixed(1) 一位小数 13.4
Number.isInteger()
方法用来判断给定的参数是否为整数。
floor()
方法返回小于等于x的最大整数
Date
toUTCString() 方法
可根据世界时 (UTC) 把 Date 对象转换为字符串,并返回结果
var d = new Date()
document.write (d.toUTCString())
// Tue, 19 May 2020 09:06:44 GMT