zoukankan      html  css  js  c++  java
  • Js new一个函数和直接调用函数的区别

    js中 function可以定义方法,也可以定义类

    不用new,也就是普通的函数调用而已,所以若是函数本身没有返回值,普通的函数调用没有什么意义
    如:
    var person=new Person();//person是一个对象
    var person = Person();//这只是一次普通的函数调用并赋值而已。

    function Person(name,age){
     
    this.name=name;
    this.age=age;
    this.sayName=function(){
    alert(this.name);
          };
    }
     
    //var person=new Person("张三",20); //此处为 构造对象,构造对象的话,返回的新对象是由解析器自己生成的。
    var person=Person("张三",20); 
    person.sayName();//报错 person undefined 此处为普通函数调用,又没有给定返回值,出错。
     
    //因为此时this指向window对象,
    window.sayName();//此时不会报错
     
    接下来就问,为什么我赋值给person,可以用window来引用呢?
    因为如果不用new就相当于普通函数调用,而 Person()根本没有返回值,
    所以Person根本就没赋值给person,此时的person只是一个undefined,
    但是Person却执行了一次,成为了window的对象,this指向了window,所以window可以直接使用Person的方法,
     
    var person= new Person("张三",20);
    person.sayName();//正常打印
    






  • 相关阅读:
    Xftp6 和 Xshell 6 下载与安装使用
    Oracle 11 安装教程(桌面类)
    Oracle 11 安装 提示环境不满足最低要求解决方案
    FICO年终完全手册
    SAP月结操作讲解
    ABAP-FI常用BAPI
    FB01与F-02的区别(转载)
    SAP应用创新-维护控制表、视图统一路径
    FI 业务
    SAP 财务模块 FI-TV 差旅管理
  • 原文地址:https://www.cnblogs.com/cowboybusy/p/9504419.html
Copyright © 2011-2022 走看看