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
  • 相关阅读:
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    同学录
    Alpha 冲刺 (5/10)
    Letcode刷题总结知识点
    python 基础语法
    Python 文件读写与编码解读
    py2exe界面和程序开发打包
    求职者五险一金解读
    互联网企业程序题总结
  • 原文地址:https://www.cnblogs.com/liqingchang/p/3728912.html
Copyright © 2011-2022 走看看