javascript类型系统 Window对象学习笔记


Posted in Javascript onJanuary 07, 2016

window对象是Web浏览器中javascript的一个终极兜底儿对象,在作用域中处于最末端,是一个包含所有对象的对象。所有在全局作用域中定义的属性和函数都是window对象的属性

var myStringVar = 'myString';
var myFunctionVar = function(){};
console.log('myStringVar' in window);//true
console.log('myFunctionVar' in window);//true
 

1、引用

通常有两种引用window对象的方法。第一种是简单引用赋予window对象的名称;第二种是在全局作用域中使用this关键字

var foo ='bar';
windowRef1 = window;
windowRef2 = this;
console.log(windowRef1,windowRef2);//输出window对象的引用
console.log(windowRef1.foo,windowRef2.foo);//'bar' 'bar'

2、特性

window对象是隐式的,通常不显式引用;即使window对象显式声明,它也是隐式的,因为window对象在作用域链中是最后一个

//window.alert()和alert()语句基本上是相同的
var foo = {//window对象在这里是隐式的,window.foo
 fooMethod: function(){
  alert('foo' + 'bar');//window对象在这里是隐式的,window.alert
  window.alert('foo' + 'bar');//显式调用window对象,效果一样
 }
}
foo.fooMethod();//window对象在这里是隐式的,window.foo.fooMethod()

3、属性

window对象共有18个属性

undefined NaN Infinity 
Boolean String Number Object Array Function Date RegExp 
Error EvalError RangeError ReferenceError SyntaxError TypeError URIError

[注意]禁止给undefined、NaN和Infinity赋值

 4、方法

Javascript附带一些预定义函数,被认为是window对象的方法

1)、编码方法

encodeURI():对整个URI进行编码,用特殊的UTF-8替换所有无效的字符

encodeURI()的不编码字符有82个:

! # $ & ' ( ) * + , - . / : ; = ? @ _ ~ 0-9 a-z A-Z
encodeURIComponent():对URI的某一段进行编码(常用于GET方法传递参数),用特殊的UTF-8替换所有无效的字符

一般来说,使用encodeURIComponent()比encodeURI()要多,因为在实践中更常见的是查询字符串参数而不是对基础URI编码。encodeURIComponent()的不编码字符有71个:

!  ' ( ) * - . _ ~ 0-9 a-z A-Z
escape():对字符串进行编码,将字符的unicode编码转化为16进制序列

ES3中反对escape()的使用,并建议用encodeURI和encodeURIComponent代替,不过escape()依然被广泛的用于cookie的编码,因为escape()恰好编码了cookie中的非法字符并且对路径中常出现的“/”不进行编码。escape()的不编码字符有69个:

* + - . / @ _ 0-9 a-z A-Z
decodeURI():解码encodeURI()

decodeURIComponent():解码encodeURIComponent()

unescape():解码escape()

var uri = "http://www.wrox.com/illegal value.htm#start";
console.log(encodeURI(uri));//http://www.wrox.com/illegal%20value.htm#start
console.log(encodeURIComponent(uri));//http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start
console.log(escape(uri));//http%3A//www.wrox.com/illegal%20value.htm%23start
var uri = 'http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start';
console.log(decodeURI(uri));//http%3A%2F%2Fwww.wrox.com%2Fillegal value.htm%23start
console.log(decodeURIComponent(uri));//http://www.wrox.com/illegal value.htm#start
console.log(unescape(uri));//http://www.wrox.com/illegal value.htm#start

eval()

eval()方法像一个完整的ECMAScript解析器,只接受一个参数,即要执行的JavaScript字符串。当解析器发现代码中调用eval()方法时,它会将传入的参数当作实际的ECMAScript语句来解析,然后把执行结果插入到原位置。eval()方法能够解释字符串的能力非常强大,但也非常危险。当用它执行用户输入数据时,可能会有恶意用户输入威胁站点或应用程序字符的代码,就是所谓的代码注入

[注意]在严格模式下,外部访问不到eval()中创建的任何变量或函数,为eval赋值也会导致错误 

2)、数字方法

Window对象下还有isFinite()、isNaN()、parseFloat()、parseInt()这四个关于数字的方法

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
理解Javascript_14_函数形式参数与arguments
Oct 20 Javascript
javascript中关于break,continue的特殊用法与介绍
May 24 Javascript
jquery图片不完全按比例自动缩小的简单代码
Jul 29 Javascript
举例详解JavaScript中Promise的使用
Jun 24 Javascript
微信公众平台开发教程(五)详解自定义菜单
Dec 02 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
Jan 12 Javascript
prototype.js简单实现ajax功能示例
Oct 18 Javascript
详解js删除数组中的指定元素
Oct 31 Javascript
简单通过settimeout看javascript的运行机制
May 10 Javascript
JavaScript装饰者模式原理与用法实例详解
Mar 09 Javascript
Canvas跟随鼠标炫彩小球的实现
Apr 11 Javascript
前端JavaScript大管家 package.json
Nov 02 Javascript
直接拿来用的页面跳转进度条JS实现
Jan 06 #Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
Jan 06 #Javascript
JavaScript动态创建div等元素实例讲解
Jan 06 #Javascript
谈谈JavaScript类型系统之Math
Jan 06 #Javascript
莱鸟介绍javascript onclick事件
Jan 06 #Javascript
莱鸟介绍window.print()方法
Jan 06 #Javascript
JavaScript实现点击按钮直接打印
Jan 06 #Javascript
You might like
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
Angularjs单选框相关的示例代码
2017/08/17 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
[07:47]DOTA2国际邀请赛采访专栏:探访Valve总部
2013/08/08 DOTA
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
Python标准库defaultdict模块使用示例
2015/04/28 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
python生成lmdb格式的文件实例
2018/11/08 Python
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
Python中字符串与编码示例代码
2019/05/20 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
司机工作自我鉴定
2014/09/19 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
店面出租协议书范本
2014/11/28 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
刘胡兰观后感
2015/06/16 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
nginx之内存池的实现
2022/06/28 Servers