js常用API 数据类型 基本类型,基本包装类型,引用类型 Object String Array Boolean Number Date Math

时间:2021-10-04 15:10:37

数据类型

变量、作用域及内存

基础类型(primitive value):Undefined、Null、Boolean、Number和String。这些类型在内存中分别占用固定大小的空间,他们的值保存在栈空间,我们通过按值来访问的。

引用类型值:Objec

如果赋值的是引用类型的值,则必须在堆内存中为这个值分配空间。

由于值大小不固定,因此不能把它们保存到栈内存中。但内存地址大小是固定的,因此可以将内存地址保存在栈内存中。当查询引用类型的变量,先从栈中读取内存地址,然后通过地址找到堆中的值,叫做按引用访问。

基本类型 基本包装类型 引用类型

《javascript高级程序设计》

P68 基本类型是简单的数据段(number,string,boolean,undefined,null)

引用类型(总结此书的目录)指那些可能由多个值构成的对象(Object类型,Array类型,Date类型,RegExp类型,Function类型,基本包装类型,单体内置对象)

基本包装类型(特殊的引用类型):Boolean,Number,String    以便于使用对象方法操作基本类型值.

引用类型与基本包装类型的主要区别就是对象的生存期,基本包装类型自动创建,并在代码执行后自动销毁实例。基本包装对象只存在于一行代码的执行瞬间。

eg:

var str = "person";
str.name = "jeson";
alert(str.name) ;// undifined
第二行中给str添加了name属性,在代码执行后就会销毁,第三行再次访问的时候,name就不见了;

Object

访问对象属性的方法:

1>  ” . ” 表示法

2>  " [] "  如果属性名包含会导致语法错误的字符,或者属性名使用的是关键字或者是保留字,则使用方括号来访问对象属性

构造器的属性:

Object.prototype

The Object.prototype property represents the Object prototype object.

这个属性表示了Object这个构造函数的原型对象。

Object.getOwnPropertyDescriptor()

Object.getOwnPropertyDescriptor(obj, prop)
The Object.getOwnPropertyDescriptor() method returns a property descriptor(返回的是一个对象) for an own property (that is, one directly present on an object, not present by dint of being along an object's prototype chain) of a given object.

Object.defineProperty( )  Object.defineProperties()

The method defines new property directly on an object, or modifies an existing property on an object, and returns the object.

Object.preventExtensions()  和  Object.isExtensible()  (阻止属性的扩展)

阻止新的属性被加入到对象

Object.seal() 和 Object.isSealed()  (封装)

The Object.seal() method seals an object, preventing new properties from being added to it and marking all existing properties as non-configurable.

Object.freeze() 和 Object.isFrozen()  (冻结)

The Object.freeze() method freezes an object: that is, prevents new properties from being added to it; prevents existing properties from being removed; and prevents existing properties, or their enumerability, configurability, or writability, from being changed. In essence the object is made effectively immutable.(不变的,不可变的,即对象彻底被锁死) The method returns the object being frozen.

Object.create()

Object.create(proto[, propertiesObject])
The Object.create() method creates a new object with the specified prototype object and properties.

创建一个对象,拥有特定的原型对象和属性。

原型对象的属性:

Object.prototype.constructor

Object.prototype.toString()

obj.toString()

The toString() method returns a string representing object.  返回字符串

Object.prototype.toLocalString()

obj.toLocaleString()

The toLocaleString() method returns a string representing the object. This method is meant to be overridden by derived objects for locale-specific purposes.

与上面的区别是?????

Object.prototype.valueOf()

object.valueOf()

JavaScript calls the valueOf method to convert an object to a primitive value(5种基本值). You rarely need(不需要) to invoke the valueOf method yourself; JavaScript automatically invokes it when encountering an object where a primitive value is expected.

Object.prototype.hasOwnProperty()

obj.hasOwnProperty(prop)

The hasOwnProperty() method returns a boolean indicating whether the object has the specified property.

判断对象上是否有某属性,返回布尔值,唯一一个不查找原型链的。

String:

参考资料:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String

构造器

String.prototype

The String.prototype property represents the String prototype object.

String.fromCharCode()

The static String.fromCharCode() method returns a string created by using the specified sequence of Unicode values.

原型对象(prototype)属性

String.prototype.constructor

String.prototype.toString()

继承自Object.prototype

String.prototype.valueOf()

继承自Object.prototype

String.prototype.charAt()

str.charAt(index)

The charAt() method returns the specified character from a string.

String.prototype.charCodeAt()

str.charCodeAt(index)
The charCodeAt() method returns an integer between 0 and 65535 representing the UTF-16 code unit at the given index

String.prototype.concat()

str.concat(string2, string3[, ..., stringN])

The concat() method combines the text of two or more strings and returns a new string.

string2...stringStrings to concatenate to this string.

String.prototype.indexOf()

str.indexOf(searchValue[, fromIndex])

查询字符串所在的位置

String.prototype.lastIndexOf()

str.lastIndexOf(searchValue[, fromIndex])

The lastIndexOf() method returns the index within the calling String object of the last occurrence of the specified value, searching backwards from fromIndex. Returns -1 if the value is not found.

String.prototype.localeCompare()

String.prototype.match()

str.match(searchvalue)   str.match(regexp)

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

String.prototype.replace()

str.replace(regexp|substr, newSubStr|function)
The replace() method returns a new string with some or all matches of a patternreplaced by a replacement. The pattern can be a string or a RegExp, and the replacementcan be a string or a function to be called for each match.

String.prototype.search()

.search(regexp)

返回值第一个与 regexp 相匹配的子串的起始位置。  如果没有找到任何匹配的子串,则返回 -1

String.prototype.slice()     String.prototype.substring()    String.prototype.substr()

str.slice(beginSlice[, endSlice])

The slice() method extracts a section of a string and returns a new string.

//这三个方法都是摘取一个字符串区域,返回一个新的字符串。

slice(start, end)            // start end 可接受   负值

substring(start, end)    // start end 不接受   负值

substr(start, length)    //    第二个参数 为 摘取字符串的 长度

String.prototype.split()

str.split([separator[, limit]])

The split() method splits a String object into an array of strings by separating the string into substrings.

String.split() 执行的操作与 Array.join 执行的操作是相反的。

若separator在字符串中不存在, 如果忽略 separator,则返回整个字符串的数组形式,仍返回一个数组。

String.prototype.toLowerCase()   String.prototype.toUpperCase()

String.prototype.toLowerCase()   转化为小写字母

String.prototype.toUpperCase()  转化为大写字母

String.prototype.toLocaleLowerCase()   String.prototype.toLocaleUpperCase()

String.prototype.toLocaleLowerCase()

String.prototype.toLocaleUpperCase()

String.prototype.trimLeft()  String.prototype.trimRight()  String.prototype.trim()

String.prototype.trimLeft()   去掉左边空白

String.prototype.trimRight()  去掉右边空白

String.prototype.trim()      去掉两边空白

Array:

MDN

这几个方法 改变调用它们的对象自身的值:

var a =[1,2,3],b=a.funciont();   // b是返回值,a是自身

shift()   删除数组的第一个元素,并返回被删除的元素

pop()    删除数组的第一个元素,并返回被删除的元素

push()  The push() method adds one or more elements to the end of an array and returns the new length of the array.

unshift()  The unshift() method adds one or more elements to the beginning of an array and returns the new length of the array.

reserve()   The reverse() method reverses an array in place  让数组顺序倒了过来

concat()

var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])

数组拼接

The concat() method returns a new array comprised of the array on which it is called joined with the array(s) and/or value(s) provided as arguments.

sort()

arr.sort([compareFunction])

compareFunction 可选。用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的诸个字符的Unicode位点进行排序。

如果指明了 compareFunction ,那么数组会按照调用该函数的返回值排序。记 a 和 b 是两个将要被比较的元素:

  • 如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前;   升序 排列
  • 如果 compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本);
  • 如果 compareFunction(a, b) 大于 0 , b 会被排列到 a 之前。          降序排列
  • compareFunction(a, b) 必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的。

join()

str = arr.join([separator = ','])  默认用 " , " 连接

The join() method joins all elements of an array into a string.

join() 方法将数组中的所有元素连接成一个字符串。

mdn

slice()

arr.slice([begin[, end]])

slice() 方法把数组中一部分的浅复制(shallow copy)存入一个新的数组对象中,并返回这个新的数组。

slice 方法可以用来将一个类数组(Array-like)对象/集合转换成一个数组。你只需将该方法绑定到这个对象上。(除了使用 Array.prototype.slice.call(arguments),你也可以简单的使用[].slice.call(arguments) 来代替。)

mdn

splice()

语法:array.splice(start, deleteCount[, item1[, item2[, ...]]])

splice() 方法用新元素替换旧元素,以此修改数组的内容。

mdn

Array.isArray()

Array.isArray(obj)    The Array.isArray() method returns true if an object is an array, false if it is not.

filter()  ES5    张鑫旭ES5中新增的Array方法详细说明

array.filter(callback,[ thisObject]);

The filter() method creates a new array with all elements that pass the test implemented by the provided function.

filtercallback函数需要返回布尔值truefalse. 如果为true,则添加到新数组。

var a = [1,2,3,4,5,6,7,4,5];
b=a.filter(function(item){
return item>5;
})
// b 现在是[6, 7] // 因为 6>5, 7>5 为true
// a 还是 [1,2,3,4,5,6,7,4,5]

forEach()     ES5

arr.forEach(callback[, thisArg])

参数为一个函数(回调支持3个参数,function(value, index, array) (对比jQuery中的$.each方法:1个和第2个参数正好是相反的)第1个是遍历的数组内容;第2个是对应的数组索引,第3个是数组本身) 和 一个可选的上下文参数(改变回调函数里面this指向)(第2个参数)

map()    ES5

arr.map(callback[, thisArg]) 

(ES5) 映射,由原来的数组 映射生成一个的数组.  参数和基本用法与forEach 类似

map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。

参考 资料一 资料二

some()  every()    ES5

some( ) arr.some(callback[, thisArg])   

This function(即some()本身) returns true if the callback function(回调函数) returns true for any(即只要有一个为true)array element; otherwise, false.

ever() arr.every(callback[, thisArg])

This function(即every()本身) returns true if the callback function(回调函数) returns true for all(即全部都得为true)array element; otherwise, false.

indexof()   ES5

 arr.indexOf(searchElement[, fromIndex = 0])

The indexOf() method returns the first index at which a given element can be found in the array, or -1 if it is not present. 

fromIndex可选,表示从这个位置开始搜索,若缺省或格式不合要求,使用默认值0.

indexOf()方法返回给定元素能找在数组中找到的第一个索引值,如果没有找到,则返回-1。

mdn

lastIndexOf()  ES5

arr.lastIndexOf(searchElement[, fromIndex = arr.length - 1])  fromIndex默认值从最后一个元素开始

The lastIndexOf() method returns the last index(最后一个索引值) at which a given element can be found in the array, or -1 if it is not present. The array is searched backwards(因为是从后往前查询的), starting atfromIndex.

reduce()   ES5

arr.reduce(callback[, initialValue])
callback(previousValue,currentValue,currentIndex,array){}

reduceRight()  ES5

arr.reduce(callback[, initialValue])
callback(previousValue,currentValue,currentIndex,array){}

差异在于reduceRight是从数组的末尾开始实现

Boolean

构造器 上的属性

Boolean.prototype

The Boolean.prototype property represents the prototype for the Boolean constructor.

原型对象 的 属性

Boolean.prototype.toString()

bool.toString()

Boolean.prototype.valueOf()

The valueOf() method returns the primitive value of a Boolean object.

Boolean.prototype.constructor

This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user.

Number

构造器的属性

Number.prototype

The Number.prototype property represents the prototype for the Number constructor.

Number.MAX_VALUE     Number.MIN_VALUE

Number.MAX_VALUE     MAX_VALUE 属性是 JavaScript 中可表示的最大的数。它的近似值为 1.7976931348623157 x 10308

Number.MIN_VALUE      MIN_VALUE 属性是 JavaScript 中可表示的最小的数(接近 0 ,但不是负数)。它的近似值为 5 x 10-324

Number.MAX_SAFE_INTEGER   Number.MIN_SAFE_INTEGER

Number.MAX_SAFE_INTEGER     253-1    9007199254740991               最大的整数

Number.MIN_SAFE_INTEGER      -(253-1)    -9007199254740991        最小的整数

NaN

表示非数字

Number.NEGATIVE_INFINITY

表示小于 Number.MIN_VALUE 的值。

该值代表负无穷大。

Number.NEGATIVE_INFINITY 是一个特殊值,它在算术运算或函数生成一个比 JavaScript 能表示的最小负数还小的数(也就是比 -Number.MAX_VALUE 还小的数)时返回。

Number.POSITIVE_INFINITY

POSITIVE_INFINITY 属性表示大于 Number.MAX_VALUE 的值。

构造器上的方法

Number.isNaN()

Number.isNaN(value)

判断value是否是“非数字”

Number.parseFloat()    Number.parseInt()

原型对象上的属性

Number.prototype.constructor

Number.prototype.toString()

Number.prototype.toLocaleString()

Number.prototype.valueOf()

Number.prototype.toFixed()

numObj.toFixed([digits])

toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。

Number.prototype.toExponential()

NumberObject.toExponential(num)
返回 NumberObject 的字符串表示,采用指数计数法,即小数点之前有一位数字,小数点之后有 num 位数字。该数字的小数部分将被舍入,必要时用 0 补足,以便它达到指定的长度。

Number.prototype.toPrecision()

numObj.toPrecision([precision])

把数字格式化为指定的长度。

Date

关于Javascript中Date类型的常见问题与建议做法

基本上我们在建立Date对象的时候,只有4种用法:

  • new Date();

  • new Date(value);

  • new Date(dateString);

  • new Date(year,month[,day,[,hour[,minutes[,seconds[,milliseconds]]]]])

Date()

语法:

new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);

构造器上的属性

Date.prototype

Date.now()

The Date.now() method returns the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.

Date.UTC()

UTC() 方法可根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。

Date.UTC() 是一种静态方法,因为需要使用构造函数 Date() 来调用它,而不是通过某个 Date 对象调用。

Date.parse()

parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。

该方法是 Date 对象的静态方法。一般采用 Date.parse() 的形式来调用,而不是通过 dateobject.parse() 调用该方法。

原型对象的属性

Date.prototype.constructor

Date.prototype.toString()

Date.prototype.toUTCString()

Date.prototype.getTimezoneOffset()                  返回格林威治时间和本地时间之间的时差,以分钟为单位

Date.prototype.toDateString()

Date.prototype.toTimeString()                              把 Date 对象的时间部分转换为字符串。
Date.prototype.toLocaleString()                            把 Date 对象的日期部分转换为字符串。

Date.prototype.toLocaleDateString()                      根据本地时间格式

Date.prototype.toLocaleTimeString()                       根据本地时间格式
Date.prototype.valueOf()

Date.prototype.toISOString()

Date.prototype.toJSON()

Date.prototype.getTime()

Date.prototype.getTime()    返回 1970 年 1 月 1 日至当前对象的毫秒数。

Date.prototype.getFullYear() Date.prototype.getUTCMonth() Date.prototype.getMonth() Date.prototype.getDate()  Date.prototype.getDay()  Date.prototype.getHours()  Date.prototype.getMinutes() Date.prototype.getSeconds() Date.prototype.getMilliseconds()

Date.prototype.getFullYear()       从 Date 对象以四位数字返回年份。

Date.prototype.getMonth()         从 Date 对象以返回月份(0-11)。

Date.prototype.getDate()           从 Date 对象返回一个月中的某一天 (1 ~ 31)。

Date.prototype.getDay()            从 Date 对象返回一周中的某一天 (0 ~ 6)。

Date.prototype.getHours()         返回 Date 对象的小时 (0 ~ 23)。

Date.prototype.getMinutes()       返回 Date 对象的分钟 (0 ~ 59)。

Date.prototype.getSeconds()       返回 Date 对象的秒数 (0 ~ 59)。

Date.prototype.getMilliseconds()   返回 Date 对象的毫秒(0 ~ 999)。

Date.prototype.getUTCFullYear()  Date.prototype.getUTCMonth()  Date.prototype.getUTCDate()  Date.prototype.getUTCDay() Date.prototype.getUTCHours() Date.prototype.getUTCMinutes() Date.prototype.getUTCSeconds()  Date.prototype.getUTCMilliseconds()

getDate getUTCDate() 区别:

getUTCDate 返回 Date 对象中用全球标准时间 (UTC)表示的日期值,getDate 返回 Date 对象中用本地时间表示的一个月中的日期值

Date.prototype.setTime() Date.prototype.setFullYear() Date.prototype.setUTCFullYear() Date.prototype.setMonth() Date.prototype.setUTCMonth() Date.prototype.setDate() Date.prototype.setUTCDate() Date.prototype.setHours() Date.prototype.setUTCHours() Date.prototype.setMinutes() Date.prototype.setUTCMinutes() Date.prototype.setSeconds() Date.prototype.setUTCSeconds() Date.prototype.setMilliseconds() Date.prototype.setUTCMilliseconds() Date.prototype.toUTCString()

Date.prototype.setTime()                以毫秒设置 Date 对象

Date.prototype.setFullYear()           dateObj.setFullYear(yearValue[, monthValue[, dayValue]])   用于设置年份。

Date.prototype.setUTCFullYear()      根据世界时 (UTC) 设置年份

Date.prototype.setMonth()               设置 Date 对象中月份 (0 ~ 11)。

Date.prototype.setUTCMonth()

Date.prototype.setDate()                  设置 Date 对象中月的某一天 (1 ~ 31)。

Date.prototype.setUTCDate()

Date.prototype.setHours()                设置 Date 对象中的小时 (0 ~ 23)。

Date.prototype.setUTCHours()

Date.prototype.setMinutes()              设置 Date 对象中的分钟 (0 ~ 59)。

Date.prototype.setUTCMinutes()

Date.prototype.setSeconds()               设置 Date 对象中的秒钟 (0 ~ 59)。

Date.prototype.setUTCSeconds()

Date.prototype.setMilliseconds()         设置 Date 对象中的毫秒 (0 ~ 999)。

Date.prototype.setUTCMilliseconds()

内置对象

Math

MDN

Math 是一个内置对象, 为数学常量和数学函数提供了属性和方法,而不是一个函数对象。

与其它全局对象不同的是, Math 不是一个构造器.  Math 的所有属性和方法都是静态的. 你用到的常数pi可以用 Math.PI 表示,用 x 作参数 Math.sin(x)调用sin函数. JavaScript中的常数, 是以全精度的实数定义的.

属性

Math.E  Math.LN10  Math.LN2  Math.LOG2E  Math.LOG10E  Math.PI  Math.SQRT1_2  Math.SQRT2

Math.E                返回算术常量 e,即自然对数的底数(约等于2.718)。

Math.LN10              返回 10 的自然对数(约等于2.302)。

Math.LN2                返回 2 的自然对数(约等于0.693)。

Math.LOG2E           返回以 2 为底的 e 的对数(约等于 1.414)。

Math.LOG10E         返回以 10 为底的 e 的对数(约等于0.434)。

Math.PI                  返回圆周率(约等于3.14159)。

Math.SQRT1_2        返回返回 2 的平方根的倒数(约等于 0.707)。

Math.SQRT2             返回 2 的平方根(约等于 1.414)。

方法

Math.random()  

返回0到1之间的伪随机数. 函数返回 [0-1) 的浮点值伪随机数(大于等于0,小于1)

Math.ceil(x)    

向上取整: 返回一个大于或等于数 "x" 的最小整数

Math.round(x)   

四舍五入: 

Math.floor(x)   

向下取整:  函数返回小于或等于数 "x" 的最大整数

Math.abs()

返回数的绝对值

Math.sin() Math.cos() Math.tan()

Math.sin()     正弦值

Math.cos()    余弦值

Math.tan()   正切值

Math.asin() Math.acos() Math.atan()

Math.asin()     反正弦值

Math.acos()    反余弦值

Math.atan()    反正切值

Math.atan2()

Math.atan2(y, x)

返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。

Math.max()   Math.min()

Math.max()    Math.max(x,y)    返回x,y 的最大值

Math.min()    Math.min(x,y)    返回x,y 的最小值

Math.exp()

Math.exp(x)      e的x次幂

Math.sqrt()

Math.sqrt(x)     x的平方根

Math.pow(x,y)

Math.pow(x,y)  x的y次幂

Math.log()

Math.log(x)    返回x的自然对数(底为e)。