分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

浅谈JS基础与内置对象

发布时间:2023-09-06 01:27责任编辑:沈小雨关键词:内置对象

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

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

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

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

所以typeof可以检测的值只有

undefined、string、number、boolean、function、object

typeof undefined ?????????????????//undefinedtypeof "zhangsan" ????????????????//stringtypeof 100 ???????????????????????//numbertypeof ?true ?????????????????????//booleantypeof function a(){} ????????????//functiontypeof null ??????????????????????//objecttypeof {} ????????????????????????//objecttypeof [] ????????????????????????//object

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

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

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

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

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

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

//0、" "、false、[]用==检验是相同的,0 == "" ?????????????????//0->false 与 ""->false进行比较 ?返回true[] == ""          //true ({}) == "" ?????  ??????//false ?因为{}直接用来比较会报类型错误,所以需要用()运算符包裹
——————————————————————————————————————————————————————————————————————————————————
null == undefined ???????//truenull === 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基础与内置对象

原文地址:http://www.cnblogs.com/Hexa-gram/p/7906644.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved