浅谈JS基础与内置对象

Posted _Hexagram

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈JS基础与内置对象相关的知识,希望对你有一定的参考价值。

第一篇js文章,今天我将从基础部分,以及三座大山开始浅谈一下自己对js的理解,有不对的地方,请大神们告知修改

我们先来了解一下js的一些基础,

首先是数据类型,JS有两种数据类型,原始类型引用类型,我们用typeof运算符来判断一个数据是何种类型

值得一提得是,typeof只能区分值类型,除function外的引用类型将全部返回Object包括null

所以typeof可以检测的值只有

undefined、string、number、boolean、function、object

typeof undefined                  //undefined
typeof "zhangsan"                 //string
typeof 100                        //number
typeof  true                      //boolean
typeof function a(){}             //function
typeof null                       //object
typeof {}                         //object
typeof []                         //object

可以看到null,[],{}都返回了object,这不是我们想要看到的,如何区分引用类型呢,我们可以用instanceof运算符来进行区分,

[]   instanceof Array           //true
({}) instanceof Array           //false
({}) instanceof Object          //true
null instanceof Object          //false

instanceof运算符的用法为左边是需要确定的引用类型,右侧为相应的引用类型,若相同则为true,不同为false

可以看到instanceof解决了引用类型区分的问题,但是instanceof并不属于很严格的校验方式,特殊情况我会在后面的章节中提到

我们都知道js是弱类型语言,所以js会自动进行类型转换,==只检查值是否相等,===不仅检查值还要检查类型是否相等

在js中的变量计算----强制转换

//0、" "、false、[]用==检验是相同的,
0 == ""                  //0->false 与 ""->false进行比较  返回true
[] == ""          //true 
({}) == ""              //false  因为{}直接用来比较会报类型错误,所以需要用()运算符包裹
——————————————————————————————————————————————————————————————————————————————————
null == undefined //true null === undefined    //false

从上述代码可以简单的理解一下js的类型转换,第三行代码特别有趣,在js中若仅以==判断时,

null与undefined会进行类型转换导致相同,运用这一特性,我们可以在日后写代码中用  

类似obj.name == null 来既判断obj.name 是否为null又判断是否为undefined。

 JS中的内置对象包括: 11个

String Number Boolean  —— 包装类型

Array RegExp Math Date

Error

Function Object
Global:
是全局作用域对象: 在浏览器中被window代替
那么什么是包装类型呢 : 即保存一个原始类型的值 并提供操作原始类型值的API
在js中原始类型的值本身不具有任何功能,比如: var a=12.652;  a.toFixed(2);

a是如何调用toFixed()函数的,因为在js中只要试图对原始类型的值调用函数时,都会自动创建包装类型对象

建立包装类型的过程分为以下几步:

  1.在试图对原始类型的值调用任何函数时先判断原始类型的类型名

  2.自动创建对应的包装类型对象,保存需要被操作的原始类型值

  3.调用包装类型对象提供的API

  4.API调用后包装对象自动释放

下面我们来展示一道小例题:

var str="haha";
str.len=5;
console.log(str.len)

手快的小伙伴应该已经试出来了,没错是undefined,那么我们的.len去哪了

原理是这样的 str.len=5  ->  new String(str).len=5;
//执行后,new String()没有变量接收,释放了
console.log(str.len)  ->   console.log(new String(str).len);//此时的new String为新来的包装类型,并不认识len属性

改进:我们应该采取这种方式

var str=new String("haha");
str.len=5;
//此时new String()被str变量引用,不会被释放!
console.log(str.money);    //5

好啦,今天的分享就到这里啦,如果有补充或者有错误请提示我改正,初来乍到请多指教








以上是关于浅谈JS基础与内置对象的主要内容,如果未能解决你的问题,请参考以下文章

ajax客户端请求与服务端响应浅谈

JS基础--函数与BOMDOM操作JS中的事件以及内置对象

Java-浅谈JSP内置对象

浅谈JS的arguments对象

浅谈js中arguments对象

浅谈js原型与原型链