由作用域安全的构造函数想到的
PHP中定义的每一个变量对象,都是$GLOBALS的属性,因为PHP本身就是面向对象的,但是JavaScript的核心语法是面向过程的,ECMAScript 标准没有规定全局对象的类型,JavaScript 的实现或嵌入的 JavaScript 都可以把任意类型的对象作为全局对象,只要该对象定义了这里列出的基本属性和函数。
这里就有一个问题,JavaScript定义的变量,对象属于哪个全局对象?window吗?
var age = 100; function Person( name , age ,gender ){ this.name = name; this.age = age; this.gender = gender } console.log( age );//100 var p2 = Person("zhang",30,"female"); console.log( window.age );//30 console.log( age );//100
由于没有使用new操作符,结果导致window对象上被增加了三个属性,但是全局中定义的同名属性值并没有被覆盖,由此可见JavaScript中定义的变量并不属于window