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 相关文章推荐
js使用DOM操作实现简单留言板的方法
Apr 10 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
May 04 Javascript
AngularJS学习笔记之基本指令(init、repeat)
Jun 16 Javascript
jquery ajax 如何向jsp提交表单数据
Aug 23 Javascript
Bootstrap选项卡与Masonry插件的完美结合
Jul 06 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
Jul 14 Javascript
js 转义字符及URI编码详解
Feb 28 Javascript
ionic实现底部分享功能
May 11 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
Jun 13 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
Nov 29 Javascript
JavaScript使用表单元素验证表单的示例代码
Aug 20 Javascript
javascript异常处理实现原理详解
Feb 17 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 array_multisort()函数的使用札记
2011/07/03 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
javascript 数组排序函数
2009/08/20 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
new Date()问题在ie8下面的处理方法
2014/07/31 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
Javascript 基础---Ajax入门必看
2016/07/06 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
使用Angular缓存父页面数据的方法
2017/01/03 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
跟老齐学Python之print详解
2014/09/28 Python
Python实现保证只能运行一个脚本实例
2015/06/24 Python
使用Python读取大文件的方法
2018/02/11 Python
python调用百度REST API实现语音识别
2018/08/30 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
详解css3 flex弹性盒自动铺满写法
2020/09/17 HTML / CSS
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
生产部主管岗位职责
2014/01/06 职场文书
优乐美广告词
2014/03/14 职场文书
办公室管理规章制度
2015/08/04 职场文书