美文网首页
JS里的对象(标准库) 普通类型和对象的区别

JS里的对象(标准库) 普通类型和对象的区别

作者: 如梦初醒Tel | 来源:发表于2019-04-26 11:49 被阅读0次

JS语言内置了一些对象,我们需要知道这些对象。全局的概念就是在全文每个地方都能使用。

全局对象 window

我们知道JS的出现就是为了能够控制浏览器行为,故浏览器先于ECMAscript存在。ECMAScript规定全局对象叫做global,但是浏览器把window作为全局对象。

window是一个hash表,有很多属性。window 的属性就是全局变量。windows的属性分为两种,一种公有,一种私有。公有就是ECMAscript规定的,私有就是某些浏览器自己加的windows属性,且各浏览器表现出来的形式不一样。

全局对象window
不管在哪个网页,都能访问一个对象,window
标准里叫glabol
全局函数,就是在任何地方都能用的函数

如果是window的属性或者方法,可以不加window.

image.png image.png image.png

左边为nodewindow都有的属性或对象,右边是只有window有的

image.png

ECMAScript规定的:

  • global.parseInt
  • global.parseFloat
  • global.Number
  • global.String
  • global.Boolean
  • global.Object

各浏览器自己加的属性:

  • window.alert(弹框提示)
  • window.prompt(用户填写)
  • window.comfirm(用户确认)
  • window.console.log(开发者)
  • window.console.dir
  • window.document(文档,其标准DOM由W3C组织制定)
  • window.document.createElement
  • window.document.getElementById
  • window.history(浏览器,其标准为BOM)
  • window.history.back
image.png

Number()

var n1 = Number('1') 和 var n2 = 1; 与 var n3 = new Number(1)三者的区别:前二者声明数字number类型,后者为对象object类型

image.png image.png

有一个重要的问题需要弄清楚,我们知道,简单类型(number/string/boolean)是没有属性的,但是上面为什么n2.toString又是成立的呢,其实是n2.toString返回的是一个临时对象temp的temp.toString()值,这是JS设计者想的一个办法,既能语法像JAVA满足boss的要求,又能方便程序员的使用。下面我们来看看var n2 = 1; n2.toString(); 这两句代码在内存中发生了什么:

内存图


image.png

还有一个易错的问题:
因为当直接var一个数值的时候,在用那些对象里的方法,后台就会设置一个临时对象,用完后再删除

image.png image.png

这里面的第二步执行完步之后,n.xxx的结果是2,但是这个temp和Heap(画圈的)里面的没有引用关系,会被回收。


image.png

因此在执行第三步的时候,Heap会重新生成一个新的temp引用,但是这个引用里面没有上面第二步的n.xxx,
所以第三步中的n.xxx会查找不到值,最后的结果就是Undefined。

String()

var s1 = String(1) 和 var s2 = 'this is a string.'; 与 var n3 = new Number('this is a string.')三者的区别:前二者声明数字string类型,后者为对象object类型。代码在内存的原理同number。看下图:

image.png

Boolean()

var b1 = Boolean(4) 和 var b2 = false; 与 var b3 = new Boolean(false);三者的区别:前二者声明数字boolean类型,后者为对象object类型。第一为强制类型转换为boolean,第二是程序员方便使用,第三是给老板看,把 false包装成 对象。代码在内存的原理同number,string,不再画图复述

注意:

image.png

这里面都是false,但是怎么就打印2 ???
解析:
这是因为在上面JS的类型中,说过,boolean布尔值为false的只有五种,分别是0,NaN,'',null,undefined。其他的包括对象都是true,而上面的var f2 =new Boolean(false)是一个对象。所以在下面执行中就会打印出2。

image.png

Object

var o1 = Object(2) 和 var o2 = {}; 与 var o3 = new Object();三者的区别:第一是强制类型转换成对象类型,第二程序员常用声明一个对象类型,第三应付boss,仿JAVA。但是注意o2!==o3,两个不同的对象

image.png image.png

小结:
看到这里,我们可以知道四个全局函数(Number、String、Boolean、Object)的作用和相应内存的改变了
这些全局函数只是将值由基本类型变成了对象而已

相关文章

  • JS里的对象(标准库) 普通类型和对象的区别

    详细教程参考阮一峰的js教学:标准库 JS语言内置了一些对象,我们需要知道这些对象。全局的概念就是在全文每个地方都...

  • jQuery前端框架--笔记

    1,JS对象和jQuery对象的区别 jQuery就是JS中的new Object生成的普通对象。 2,JS对象和...

  • 基本类型和对象的区别

    这篇文章主要介绍JS中基本类型与对象之间的区别。 对象包括普通对象,数组以及函数。普通对象是基本类型的混合,同时其...

  • JS里的对象(标准库)

    JS里的对象(标准库) 几个全局对象,全局方法的学习记录 详细教程参考阮一峰的js教学:标准库 全局对象windo...

  • 原型与原型链2018-09-27

    全局对象,标准称为global,浏览器中被叫做window 原型 JS中万物皆对象。但对象也有区别,分为普通对象和...

  • js 对象和jquery对象的比较

    1、js 对象和jquery对象的区别 jquery对象是js中的new Object()生成的普通对象 2、js...

  • JS里的Array对象笔记

    JS标准库 Object对象 对于String、Number、Boolean来讲,加new和不加new是有区别的 ...

  • C++学习手记二:向量和迭代器

    三 标准库类型vector 标准库类型vector表示对象的集合,其中所有对象的类型都相同。集合中每个对象都有一个...

  • Js面向对象进阶

    一.普通对象与函数对象 js中万物皆对象!但对象也是有区别的。分为普通对象和函数对象,Object 、Functi...

  • 普通类型和对象的区别

    本篇文章将主要介绍普通类型与对象在内存中储存方式的不同,也正因为这种不同,导致普通类型和对象在JS的使用中存在着一...

网友评论

      本文标题:JS里的对象(标准库) 普通类型和对象的区别

      本文链接:https://www.haomeiwen.com/subject/sulzgqtx.html