HTML5技术

【javascript】详解变量,值,类型和宿主对象 - 外婆的彭湖湾(4)

字号+ 作者:H5之家 来源:H5之家 2017-09-03 13:26 我要评论( )

也正因如此, 各大浏览器关于console对象API的实现也各不相同(当然log这种基本方法都有。。) 1. 低版本的IE甚至没有console对象(当然也就没有了与之对应的调试功能) 2.谷歌和火狐console对象下的方法基本相同,


也正因如此, 各大浏览器关于console对象API的实现也各不相同(当然log这种基本方法都有。。)
1. 低版本的IE甚至没有console对象(当然也就没有了与之对应的调试功能)
2.谷歌和火狐console对象下的方法基本相同,但也是有差异的。例如:


谷歌console下有memory方法火狐没有

连连看! 找不同
这是我大谷歌中打印的console对象:

 

这是火狐打印的console对象

 


Window对象


学习JS的筒子们一般都知道, “JS有有个保存全局变量的顶层对象, 它叫Window对象,或者叫做global对象”

我一直以来也有一个困惑:“既然(如果)Window对象和global对象是同一个东西的话,干嘛要取两个名称,你们玩我啊?”
阅读了相关资料后, 我发现:“Window对象和global对象是同一个东西”的说法并不是很精确

 

最重要的一点是:他两隶属的“政治阵营”不一样


1.Global对象是ECMAscript标准中定死的全局对象
2.Window对象是浏览器的一个实例,所以你容易推测出:不同的浏览器对Window的实现应该是不一样的,至少在许多细节上会有不同, 也就是这些不同的浏览器分别拥有并不太一样的Window对象

而javascript在宿主环境(浏览器)上运行的时候, 会把当前浏览器Window对象作为自己的Global对象,这时候,“从表面上看”, Window对象和Global对象“是同一个”

 

所以说javascript运行程序就是一个到处混吃混喝的主,找到哪个“东家”(宿主环境/浏览器),就把东西的Window对象“偷”出来, 当成自己的Global对象

以下场景是我想象出来的:

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
javascript敲了敲门:“诶,老谷啊(谷歌)! 我又上你家串门来了,那个啥。。。。。”
门开了
谷歌浏X器瞧见是JS, 从怀里掏出Window对象来,摆摆手:“走! 走! 走!!!”
javascript把Window对象放进自己的Global口袋里,心满意足地走了。
“明儿去老狐家和safari家吧! IE家太寒碜,我就不去了”

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

DOM元素对象


例如 var a = document.createElement('div'); 取得的就是一个DOM元素对象
DOM元素对象也是浏览器提供的东西, 所以它并不像javascript标准里的其他对象那样服从“控制”
它有以下一些特点:

• 无法写覆盖;
• 包含一些预定义的只读属性;
• 包含无法将 this 重载为其他对象的方法

基本类型大杂谈——聊聊那些坑点

下面讲的这些东西, 有些你可能比较少用到, 但它们绝对有理由会坑到你,而且还会。。。。坑死你。。。

undefined篇


恼人的undefined

 


为了进一步明确undefined的行为, 这里我引入 undeclared的概念:


1.undefined表示变量声明了, 但没有赋值, 不会报错
2.undeclared表示变量从来就没有声明, 这会导致报错

var b; console.log(b); // 输出undefined

 

console.log(a); // 直接报错

 

到底是什么让我们对undefined一脸懵蔽?


首先我要告诉你上面1,2两条已经足以表征undefined和 undeclared的不同了,但很多时候我们仍会搞混,为什么呢?

 

因为javascript会 故!意!搞!事!(此处有褒有贬)

 

1. 一般情况下使用一个未声明(undeclared)的变量是会直接报错的,但typeof运算符的“安全机制”规避这一点, 例如:

a;

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 【javascript】函数中的this的四种绑定形式 — 大家准备好瓜子,我要讲故事啦~~ - 外婆的彭湖湾

    【javascript】函数中的this的四种绑定形式 — 大家准备好瓜子,我要

    2017-08-16 11:00

  • 【javascript】详解javaScript的深拷贝 - 外婆的彭湖湾

    【javascript】详解javaScript的深拷贝 - 外婆的彭湖湾

    2017-08-15 12:01

  • 一次浴火重生的MySQL优化(EXPLAIN命令详解) - 禁心尽力

    一次浴火重生的MySQL优化(EXPLAIN命令详解) - 禁心尽力

    2017-08-02 14:00

  • AngularJS“路由”的定义概念、使用详解——AngularJS学习资料教程 - 我叫小熊

    AngularJS“路由”的定义概念、使用详解——AngularJS学习资料教程 -

    2017-07-12 11:01

网友点评
{