数据类型
基础类型(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...stringN
Strings 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 pattern
replaced by a replacement
. The pattern
can be a string or a RegExp
, and the replacement
can 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:
这几个方法 改变调用它们的对象自身的值:
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()
方法将数组中的所有元素连接成一个字符串。
slice()
arr.slice([begin[, end]])
slice() 方法把数组中一部分的浅复制(shallow copy)存入一个新的数组对象中,并返回这个新的数组。
slice
方法可以用来将一个类数组(Array-like)对象/集合转换成一个数组。你只需将该方法绑定到这个对象上。(除了使用 Array.prototype.slice.call(
arguments
)
,你也可以简单的使用[].slice.call(arguments)
来代替。)
splice()
语法:array.splice(start, deleteCount[, item1[, item2[, ...]]])
splice()
方法用新元素替换旧元素,以此修改数组的内容。
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.
filter
的callback
函数需要返回布尔值true
或false
. 如果为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。
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
基本上我们在建立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
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)。