javascript变量、作用域、命名空间
javascript变量主要分为两类:
I. 全局变量
II. 局部变量(函数内的变量)
I. 全局变量: 定义在方法体外地所有变量都是全局变量, 还有即使在方法体内使用的变量, 但是未用var关键字声明的也都是全局变量。
ll. 局部变量: 定义在方法体内的、 使用var关键字声明的变量。 (即使跟全局变量名一样, 他也会覆盖全局变量。)
注:
全局变量就是在当前页面起作用, 一个页面当中的iframe也不管用, 只在一个页面当中有效。
如果JS代码很多的时候, 我们都要引用JS脚本文件, 但是有可能出现两个脚本当中的全局变量名是一样的, 这会出现错误。 因为面对这些问题JS不会报错, 所以我们需要使用命名空间来解决这些冲突。
javascript命名空间:
random.js
[javascript]
// 通过 ID 获取 Element 对象
function $(id) {
return document.getElementById(id);
}
// 显示对应 ID 的对象的节点类型名字
function myMethod(id) {
alert($(id).nodeName);
}
<span style="color:#cc0000;">// 这是对外的接口
window['myNamespace']= {}
window['myNamespace']['$'] = $;
lt;/span>
上面这段代码有两个方法, 红色的部分就是所谓的命名空间,为上面说是所谓的命名空间? 因为不是上面新的一种机制或者技术。 如果仔细观察会发现
window['myNamespace'] = {}
其实就是一个定义对象的语法, 我们在window对象里添加了一个属性(属性名:myNamespace), 这个属性就是一个对象。 第二行代码
window['myNamespace']['$'] = $;
window['myNamespace']就是一个对象, 我们要给这个对象再添加一个属性['$'], 这个属性就是方法$, 所以我们引入random.js文件之后, 在页面想要使用random.js中的$()方法的时候, 使用window.myNamespace.$就可以了。 也可以直接用myNamespace.$, 省略了window。
当然还有很多实现命名空间的办法, 还可以直接用一个对象包住(把所有的方法都定义在对象之内), 这样在外界如果不通过对象名.方法名, 这种格式的话就无法访问里面的方法, 体现了面向对象的封装性。
摘自 从此爱上蒲肉格蕾铭.-^
相关新闻>>
- 发表评论
-
- 最新评论 更多>>