美文网首页
JavaScript new 关键字

JavaScript new 关键字

作者: HelloJames | 来源:发表于2019-01-01 19:45 被阅读27次

new 关键字

在JavaScript中, new 关键字用来创建一个类(模拟类)的实例对象。 实例化对象之后, 也就继承了类的属性和方法。 例如:

function Person(name, age){
  this.name = name;
  this.age = age;
}
Person.prototype.getName = function(){
  return this.name;
};

var person = new Person('james', 18);
console.log(person.name, person.age);
person.getName();

在以上代码中 var person = new Person('james', 18);中的new关键字做了些什么呢?用伪代码来模拟其执行的过程如下:

new Person('james', 18)  = {
  var obj = {};
  obj.__proto__ = Person.prototype;
  var res = Person.call(obj, 'james', 18);
  return typeof res === 'object' ? res : obj;
}

在JavaScript中, 使用new关键字后, 意味着做了如下4件事:

  • 创建一个新的空对象 {}
  • 设置这个对象原型指向构造函数, 即上例中的obj.__proto = Person.prototype
  • 执行构造函数, 当this关键字被提及的时候, 使用新创建的对象的属性。
  • 返回新创建的对象(除非构造函数中返回的是“无原型”)。

在创建一个新对象成功之后, 如果调用一个新对象没有的属性或方法的时候, JavaScript会沿着原型链向上逐层查找对应的属性或方法。 这就类似于传递的“类继承”。

继承

JavaScript对象有一个特殊的prototype内置属性, 其实就是对于其他对象的引用, 几乎所有的对象在创建时, prototype的属性都会被赋予一个非空的值(除了object.create(null))。 所有普通的prototype链最终都会指向内置的object.prototype. 里面包含了很多常见的功能, 如: toString(), valueOf(), hasOwnProperty(), isPrototypeOf()等等。

如果上例中的构造函数Person,实例化一个对象 obj后, obj的原型的构造器函数指向Person构造函数, obj.proto.proto指向Object的构造函数。

image.png

相关文章

  • JavaScript new 关键字

    new 关键字 在JavaScript中, new 关键字用来创建一个类(模拟类)的实例对象。 实例化对象之后, ...

  • JavaScript面向对象设计

    参考资料: 深入理解JavaScript系列(5):强大的原型和原型链 JavaScript new关键字 jav...

  • 2.1

    JavaScript是浮点型语言 关键字 break else new var case finally retu...

  • 日期对象-Date

    1、创建Date对象 在JavaScript中,创建日期对象必须使用“new语句”。使用关键字new新建日期对象时...

  • new 关键字

    1. 使用new发生了什么 和其他高级语言一样javascript中也有new关键字,但是new内部都干了什么呢?...

  • 源码角度分析 new Vue 会发生什么

    从入口代码开始分析,new Vue 背后发生了哪些事情。 new 关键字在 JavaScript 中代表实例化一个...

  • new 关键字模拟实现

    首先,new 是JavaScript用来实例化一个对象的关键字,后边跟着构造函数,例如: 那么,new究竟做了什么...

  • JavaScript —关于“ this”关键字的全部

    在本文中,我们将了解什么是JavaScript中的this关键字,this关键字的四种不同绑定以及“ new”关键...

  • JavaScript基础之创建对象

    JavaScript对象的创建 在JavaScript中创建一个对象有三种方式。可以通过对象直接量、关键字new和...

  • new关键字对构造函数做了什么

    在javascript中,new关键字能让一个函数变得与众不同,把new搞清楚了,就明白构造函数中的this指向谁...

网友评论

      本文标题:JavaScript new 关键字

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