Zlog
首页时间轴关于
Zlog

一个探索技术、编程和构建 Web 的个人空间。

© 2026 Zlog

导航

首页时间轴关于

链接

首页/new

new

创建类的新实例,必须调用 new 操作符,以这种方式调用构造函数实际经历了四步:

Z

Zephyr110

2020年1月1日·1 分钟
|
frontendfrontend-javascript

1. 过程

创建类的新实例,必须调用 new 操作符,以这种方式调用构造函数实际经历了四步:

“
  1. 创建一个新对象
  2. 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象)
  3. 执行构造函数中的代码(为这个新对象添加属性)
  4. 返回新对象

2. 实现一个简单的 new 方法

js
// 构造器函数
let Parent = function(name, age) {
	this.name = name;
	this.age = age;
};
Parent.prototype.sayName = function() {
	console.log(this.name);
};
 
// 自定义的new方法
let newMethod = function(Parent, ...rest) {
	// 1. 以构造器的prototype属性为原型,创建新对象
	let child = Object.create(Parent.prototype);
 
	//2.将this和调用参数传给构造器执行
	Parent.apply(child, rest);
 
	//3.返回第一步创建的对象
	return child;
};
 
// 创建实例,将构造器函数Parent与形参作为参数传入
const child = newMethod(Parent, 'A', 22);
child.sayName(); // A;
 
// 检验,与使用new效果相同
child instanceof Parent; //true
child.hasOwnProperty('name'); //true
child.hasOwnProperty('age'); //true
child.hasOwnProperty('sayName'); //false

标签

frontendfrontend-javascript

评论

相关文章

Facade

外观模式:就是提供一个统一的接口去访问多个子系统的多个不同的接口,为子系统中的一组接口提供统一的高层接口。使得子系统更容易使用,不仅简化类中的接口,而且实现调用者和接口的解耦。

2021年12月26日·2 分钟

Singleton

单例模式:就是在整个运行时域,一个类只有一个实例对象。

2021年12月26日·2 分钟

Function Overloading

函数名相同,函数的参数列表不同(参数个数、参数类型),根据参数的不同之行不同的操作。

2021年12月19日·2 分钟

← 返回文章列表