《javascript高级程序设计》构造函数创建对象章节-147页:在全局作用域中定义的函数只能被某个对象调用

来源:互联网 发布:软件测试的简历 编辑:程序博客网 时间:2024/06/03 12:50

        在js高程这本书中第147页提到:在全局作用域中定义的函数实际上只能被某个对象调用,这让全局作用域有点名不副实。

        自己的理解:

        javascript中在全局作用域中定义的函数只能被某个对象调用:这句话的意思是,你在全局作用域中定义了一个函数sayName,可是这个函数是针对Person对象定义的,只有Person对象调用了这个函数(如果你定义了其他对象,比如Car,Book或Home,这些对象都不会有sayName方法,都不会去调用它)。既然只有Person会用到sayName,为什么要在全局作用域中定义sayName呢,这不是很浪费么,而且也不安全。(这里原文中确实对“对象”、“实例”、“类”这3个概念有点混淆,不过不妨碍理解。)

        只有会被所有对象用到的才需要用全局,但是这种情况严格上来讲是不存在的,除了js自带的。我们知道,Global对象就是ECMAScript中的全局对象,反映在javascript中,是用window对象实现的,比如常用的属性:undefined,NaN,方法eval(),encodeURL()等,其实都是window.undefined,window.eval();所以尽量别定义全局变量,否则很容易与其他的代码冲突(你不能保证很多人一起工作时,别人不会定义一个相同名字的全局变量),这也是为什么一般每个人对自己的代码外层都要用闭包创建一个块级作用域。

0 1
原创粉丝点击