/** *作者 15879 - LRH *创建时间 2018 2018/4/30 11:35 **/ /* 原始类型 bool number string null undefined 引用类型 各种对象 类型判断 typeof 鉴别引用类型 instanceof */ /** * 原始类型 * @type {string} */ //string var name='RunHuaLi'; var char='a' //numbers var count=25; var cost=1.25 //bool var flag=true; //null var obj=null; //undefined var ref=undefined //类型判断 console.log(typeof name) console.log(typeof flag) console.log(typeof ref) console.log(typeof obj) console.log(typeof count)
//备注 typeof操作符对number bool string undefined 可以识别 但是对于null对象 会返回object
//所以用下面的===判定是否空引用 console.log(obj===null)
上面很重要
/** * 引用类型 */ /* 引用类型创建 第一种 用new操作符和构造函数 任何函数都可以是构造函数 第二种 字面形式 对象引用解除 将引用赋值为null后 obj=null; js引擎会自动回收内存中的对象实例 鉴别引用类型 instanceof */ var obj= {}; var myFunction=function () {} var arr=[]; console.log(obj instanceof Array) console.log(myFunction instanceof Function) console.log(Array.isArray(arr)) /* 原始封装类型 Number String Bool 为了使用方便 js引擎对数字 字符串 布尔类型执行自动化的打包封装 使用完后解除引用 */
第一章 主要介绍引用类型 和原始类型的差别 注意的是比较特殊的原所封装类型 Number String Bool 这三个是引用类型
它们的使用有些特殊,这三个一般有js引擎自动封装使用 例如
var mystring=‘my first love’;
mystring.charAt(0); //该函数返回该字符串的第一个字符
但是注意 mystring里是没有charAt()这个函数的 但是为什么它又可以调用呢?
我们看看 js引擎在背后帮我们做的事情。
var mystring ='my first love'; var temp=new String(mystring); var char=temp.charAt(0); temp=null;
看看 js引擎在后面帮我们做了这么多事
1 实例化一个原始引用类型 String;
2 利用该实例调用charAt()方法
3 这是比较重要的一步 将temp设为null 大家或许奇怪js为什么要帮我们做这一步,(可能是做好事不留名吧) 但其实这是为了主动回收内存 ,将一个对象设为null后 ,该对象就会被清楚;
这玩意这么屌 那就有人问了 那我能不能手动创建它 答案是可以的 ;
你通过var string=new String('first love');创建。
但是会有几个弊端
首先 typeOf操作符识别不出这的具体类型 这三个原始应用类型 的typeOf的结果都是‘object’
其次是Bool的的实例 例如if(BOOL){} 如果BOOL是原始引用变量 那结果是会永远执行 ,因为object的判断结果为true。
未完 待续。。。。。。。