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 相关文章推荐
在页面上点击任一链接时触发一个事件的代码
Apr 07 Javascript
Javascript 各浏览器的 Javascript 效率对比
Jan 23 Javascript
ASP中Sub和Function的区别说明
Aug 30 Javascript
js中的eventType事件及其浏览器支持性介绍
Nov 29 Javascript
jquery遍历checkbox的注意事项说明
Feb 21 Javascript
jQuery 删除/替换DOM元素的几种方式
May 20 Javascript
javascript定义变量时带var与不带var的区别分析
Jan 12 Javascript
jQuery插件实现可输入和自动匹配的下拉框
Oct 24 Javascript
微信小程序多列选择器range-key使用详解
Mar 30 Javascript
解决Layui数据表格的宽高问题
Sep 28 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
Oct 15 Javascript
JS实现判断移动端PC端功能
Feb 21 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列出一个目录下的所有文件的代码
2012/10/09 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
使用php的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
php回调函数处理数组操作示例
2020/04/13 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
2018/12/13 Javascript
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
python读取LMDB中图像的方法
2018/07/02 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
会计电算化专业毕业生自荐信
2013/12/20 职场文书
咖啡厅创业计划书范本
2014/01/22 职场文书
产品销售计划书
2014/05/04 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle