javaScript 总共有两种数据类型:java
基本数据类型(或者原始数据类型)按值传递:number string boolean undefined null symbol函数
复杂数据类型(或者引用数据类型)按引用传递:object spa
能够使用 typeof 操做符简单的检测给定变量的数据类型:prototype
检测数值(包括NaN,Infinity)返回 "number";对象
检测字符串 返回 "string";继承
检测布尔值 返回 "boolean";ip
检测一个变量未定义,或者未赋值 ,返回 "undefined";原型链
检测一个对象或者null 返回 "object";字符串
检测一个函数 返回 "function";get
检测一个Symbol值 返回 "symbol" symbol 是ES6新增基本数据类型
Number 转换为数值 三种方法:Number(),parseInt(),parseFloat();
Number()方法,它会 “计算” 要转换的数值,而且会忽略前导0,可是能够转换16进制数;
Number( ' ' ) // 0
Number( ' 12a ' ) // NaN
Number( ' true ' ) // NaN
Number( true ) // 1
parseInt()和parseFloat(),它们不会 “计算” ;
parseInt() 不识别小数点,但能够提供第二个参数:转换是使用的基数,就是要解析的值是多少进制;能够转换8/16进制;
parseFloat() 只识别第一个小数点,会忽略前导0,只解析十进制数;
parseInt( ' ' ) 、parseFloat( ' ' ) // NaN
parseInt( ' 12a' ) // 十二、parseFloat( ' 12.1a' ) // 12.1
parseInt(true) 、parseFloat( true) // NaN
String 转换为字符串 String(),会调用 toString() 方法(若是有的话),null、undefined没有toString方法,返回它们自己;
也能够使用加号操做符(该值能够进行加运算的话)与一个空字符串加一块儿:值 + ' ';
Boolean 转为布尔值 Boolean() ,这六个值转为false:false、0、' '、NaN、null、undefined; 其它都转为true;
Undefined、Null 两个特殊的类型,Number(null) // 0、 Number(undefined) // NaN
Object 对象的属性以及方法:
prototype 原型对象,指向另外一个对象,本对象的属性继承自它的原型对象;
原型的获取方法:标准方法 Object.getPrototypeOf(obj) 非标准 obj.__proto__
constructor 构造函数,它保存着用于建立当前对象的函数;
构造函数的原型的constructor属性指向构造函数自己: Foo.prototype.constructor === Foo;
obj.hasOwnProperty(' 属性名 '),判断该属性是否为obj对象的自有属性;
结合 in 操做符 能够判断该属性是自有属性仍是共有属性;
A.prototype.isPrototypeOf(B),检测一个对象(A.prototype)是否在另一个对象(B)的原型链上;
也就是说B对象是否继承自A.prototype;
obj.propertyIsEnumerable(' 属性名 ') 检测对象obj的属性是否能够用 for-in 枚举;
for-in 能够遍历自身以及继承的可枚举属性; Object.keys( ) 只遍历自身可枚举属性;
valueOf() 、toString()、toLocaleString() 返回对象的字符串表示;