由作用域安全的构造函数想到的

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

posted @ 2017-01-07 14:34  点点乐淘淘  阅读(115)  评论(0编辑  收藏  举报