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

        在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();所以尽量别定义全局变量,否则很容易与其他的代码冲突(你不能保证很多人一起工作时,别人不会定义一个相同名字的全局变量),这也是为什么一般每个人对自己的代码外层都要用闭包创建一个块级作用域。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值