zoukankan      html  css  js  c++  java
  • Javascript中的new

    直接上代码

    function test () {
    
     }
     document.write(typeof test() + "<br />")
     document.write(typeof new test() + "<br />")

    输出结果

    undefined

    object

    undefined好理解,因为test函数没有返回值。

    那new的时候为什么会返回object呢?其实当我们new一个方法的时候,可以理解为js帮我们做了某些操作,代码如下,注释的部分就相当于js帮我做的

    function test () {
          //var this = new Object();
          //my code...
          //return this;
    }

    每次使用new,意为创建一个新的空白对象

    alert(test() === test())          //true
    alert(new test() === new test())          //false

    当然,在没有new就调用test方法的时候,并不表明其中就不能使用this,这时候的this,指向window,为了进一步证实这一点,代码如下:

    window.name = "jack"
    function fn () {
        this.name = "rose";
    }
    fn();
    document.write(window.name)          //rose

    捎带手的说下window,当我们在大环境下声明一个变量(全局变量),无论是否有var,其实是给window对象加了一个属性。

    如果我们在其他函数内声明变量的时候不适用var,很可能就在无意间将其他的全局变量更改掉,下面的代码是个再常见不过的代码,说明了使用var的必要性。

    var name = "window";
    (function test(){
        var name = "test";
        document.write(name + "<br/>");   //test   
    })();
    document.write(name + "<br/>"); //window
  • 相关阅读:
    web进修之—Hibernate 继承映射(5)
    web进修之—Hibernate 类型(4)
    web进修之—Hibernate 关系映射(3)
    web进修之—Hibernate起步(1)(2)
    poj2828(Buy Tickets)线段树
    hdu2795(Billboard)线段树
    hdu1394(Minimum Inversion Number)线段树
    hdu4407Sum(容斥原理)
    树的重心
    匈牙利算法
  • 原文地址:https://www.cnblogs.com/liqingchang/p/3728912.html
Copyright © 2011-2022 走看看