js面向对象精要 第一章(持续更新)

/**
 *作者  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。 


未完  待续。。。。。。。

 

猜你喜欢

转载自blog.csdn.net/qq_36375770/article/details/80300080