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
  • 相关阅读:
    女子腰背疼痛案
    老人心悸心膝部无力屈伸不利案
    经方生姜泻心汤临床应用发挥
    电话求诊易误治
    女子乳房结块案
    小儿手足口案
    门纯德老先生经验
    男子肋部掣痛案
    加味潜降汤治疗阴虚阳亢之眩晕(来自网络)
    三叉神经痛与芎胡六虫汤
  • 原文地址:https://www.cnblogs.com/liqingchang/p/3728912.html
Copyright © 2011-2022 走看看