如何解析并模拟JavaScript中的new操作符原理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计860个文字,预计阅读时间需要4分钟。
new是JavaScript中的一个关键字,用于将函数实例化为对象。例子:function Animal(name) { this.name=name; } Animal.prototype.sayName=function() { console.log('I\'m ' + this.name); }; var cat=new Animal('Tom'); console.log(cat.sayName());
new是JS中的一个关键字,用来将构造函数实例化的一个运算符。例子:
function Animal(name) { this.name = name; } Animal.prototype.sayName = function() { console.log("I'm " + this.name); } var cat = new Animal('Tom'); console.log(cat.name); // Tom console.log(cat.__proto__ === Animal.prototype); // true cat.sayName(); // I'm Tom
从上面的例子可以得出两点结论:
- new操作符实例化了一个对象;
- 这个对象可以访问构造函数的属性;
- 这个对象可以访问构造函数原型上的属性;
- 对象的**__proto__**属性指向了构造函数的原型;
由于new是关键字,我们只能去声明一个函数去实现new的功能,首先实现上面的三个特性,第一版代码如下:
附:对原型原型链不熟悉的可以先看理解Javascript的原型和原型链。
本文共计860个文字,预计阅读时间需要4分钟。
new是JavaScript中的一个关键字,用于将函数实例化为对象。例子:function Animal(name) { this.name=name; } Animal.prototype.sayName=function() { console.log('I\'m ' + this.name); }; var cat=new Animal('Tom'); console.log(cat.sayName());
new是JS中的一个关键字,用来将构造函数实例化的一个运算符。例子:
function Animal(name) { this.name = name; } Animal.prototype.sayName = function() { console.log("I'm " + this.name); } var cat = new Animal('Tom'); console.log(cat.name); // Tom console.log(cat.__proto__ === Animal.prototype); // true cat.sayName(); // I'm Tom
从上面的例子可以得出两点结论:
- new操作符实例化了一个对象;
- 这个对象可以访问构造函数的属性;
- 这个对象可以访问构造函数原型上的属性;
- 对象的**__proto__**属性指向了构造函数的原型;
由于new是关键字,我们只能去声明一个函数去实现new的功能,首先实现上面的三个特性,第一版代码如下:
附:对原型原型链不熟悉的可以先看理解Javascript的原型和原型链。

