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
  • 相关阅读:
    [概述]移动机器人自主探索
    MRPT编译
    Kinect2.0相机标定
    小豆包的学习之旅:里程计运动模型
    小豆包的学习之旅:入门篇
    Kinect2.0点云数据获取
    COFF,amd64.vc90.mfc两个布署的问题
    [硬件]Robot运动控制
    [硬件]Urg_viewer数据读取
    [硬件]三维点云数据获取
  • 原文地址:https://www.cnblogs.com/liqingchang/p/3728912.html
Copyright © 2011-2022 走看看