美文网首页
Js 使用new关键字调用函数和直接调用函数的区别

Js 使用new关键字调用函数和直接调用函数的区别

作者: ZH彪 | 来源:发表于2020-07-08 15:47 被阅读0次

调用经典的构造函数需要加new

function Person(name, age, job) {
  var o = new Object();
  o.name = name;
  o.age = age;
  o.job = job;
  o.sayName = function () {
    alert(this.name);
  };
  return o;
}
var friend = new Person("Nicholas", 29, "Software 
console.log(friend);
    

Person函数创建了一个对象,并以相应的属性和方法初始化该对象,然后又返回了这个对象,除了使用new操作符且把使用的包装函数叫做构造函数

看到这里,我就将上面的例子的new关键字去掉,发现和原来结果一样。
而后,我写了一下几个例子,进行比较:

function Person(name, age) {
  this.name = name;
  this.age = age;
  this.sayName = function () {
    alert(this.name);
  }
}
var person=new Person("张三",20); //此处为 构造对象,构造对象的话,返回的新对象是由解析器自己生成的。
console.log(person); // 有new 函数内部的this指向实例本身  Person {name: "张三", age: 20, sayName: ƒ}
    
// var person = Person("张三", 20); //没有new 函数内部的this指向window
// console.log(person); //报错 person undefined 此处为普通函数调用,又没有给定返回值,出错。
注意:构造函数在不返回值的情况下,默认返回新对象实例。

相关文章

  • JavaScript构造函数和普通函数的区别

    二者区别 1.调用方式 普通函数直接用person()可直接调用 构造函数则需要用new关键字调用,如new Pe...

  • Js 使用new关键字调用函数和直接调用函数的区别

    调用经典的构造函数需要加new Person函数创建了一个对象,并以相应的属性和方法初始化该对象,然后又返回了这个...

  • JS this指向

    一、js中的四种调用模式s 构造函数调用:new Foo(); 对象方法调用:o.method(); 函数直接调用...

  • 简单案例来看JS中的面向对象

    在JS中,一般情况下我们都是直接写函数,直接调用,但是发现JS中也有new关键字,那么new关键字作为创建对象的关...

  • JavaScipt - 推荐设计模式

    构造函数模式 默认函数首字母大写 构造函数和普通函数的区别在于调用方法,使用new操作符调用的就是构造函数。 可以...

  • this

    this 对象的理解 普通函数 this 总是指向函数的直接调用者如果有 new 关键字,this 指向 new ...

  • 函数new和直接调用的区别

    函数new和直接调用的区别 m1就是函数Man()执行的返回值,也就是undefined. 在函数执行过程中,属性...

  • 函数new和直接调用的区别

    函数new和直接调用的区别 m1就是函数Man()执行的返回值,也就是undefined. 在函数执行过程中,属性...

  • JS经验

    this this总是指向函数的直接调用者(而非间接调用者); 如果有new关键字,this指向new出来的那个对...

  • 浅谈js中this的问题

    this是js中的关键字,它遵循的规则是:谁调用,指向谁 哪个对象调用函数,函数里面的this指向哪个对象。 直接...

网友评论

      本文标题:Js 使用new关键字调用函数和直接调用函数的区别

      本文链接:https://www.haomeiwen.com/subject/pgjccktx.html