函数new和直接调用的区别

函数new和直接调用的区别

m1就是函数Man()执行的返回值,也就是undefined. 在函数执行过程中,属性被加到全局作用域或者Man方法所属的对象上了。执行之后window.sex=="male"
而m2是Man的实例,Man {sex:"male",age:21}

function Man(age){
    this.sex="male";
    this.age=age;
}
m1=Man(20);
m2=new Man(21);

这个就不需要加new,m3是一个Object,不是Man的实例。

function Man(age) {
    var obj = new Object();
    obj.sex = "mail";
    obj.age = age;
    return obj;
}
m3=Man(22);

** native code中,加new就是返回这个构造函数的实例;不加作为函数就返回一个基本数据类型,或者会报错 “ DOM object constructor cannot be called as a function ”。

Date(),不加new返回当前时间,是一个字符串。加new的话,返回当前时间或者把参数格式化得到的时间,是一个Date对象

new 对象实例所做的事情
function createPerson(name, age) {
   var o = new Object();
   o.name = name;
   o.age = age;
   o.sayName = function() {
       alert(this.name);
   };
   return o;
}

//返回类 构造函数里,如果返回一个非null的对象,那么new 对象就是返回的对象.没有就是返回本身
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,756评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,280评论 19 139
  • UIPickerView 实现城市选择三级联动。 需要用到一些宏定义 上代码 初始化话一个UIPickerView...
    没手感阅读 3,841评论 0 0
  • 我若不喜欢你,怎会和你做朋友?我若喜欢你,怎会仅仅与你做朋友? ...
    苏宇城阅读 3,730评论 0 2

友情链接更多精彩内容