静态方法,实例方法,原型方法的区别

2,785 阅读1分钟

基础知识

静态方法和实例方法的定义

A static method (or static function) is a method defined as a member of an object but is accessible directly from an API object's constructor, rather than from an object instance created via the constructor.
静态方法(或静态函数)是定义为对象成员的方法,但可以直接从API对象的构造函数访问,而不是通过构造函数创建的对象实例访问。
Methods called on object instances are called instance methods.
在对象实例上调用的方法称为实例方法。

内容取自MDN,点击跳转连接

区别

三种方法的区别主要在于

1.是否可以被构造函数和实例对象调用

方法类别是否可以被 构造函数 调用是否可以被 实例化对象 调用
静态方法可以不可以
实例方法不可以可以
原型方法不可以可以

2.内存空间分配情况(待验证)

Q:跟后台同时沟通 java 中的静态方法和实例方法有内存分配的区别,前端暂时没有找到官方资料支持,待验证,以下是结论 静态方法随构造函数一同生成,存放集中 实例方法随实例化对象生成产生,存放较为离散

验证

// 初始化构造函数
 const Parent = function() {
 	// 添加实例方法
	this.instanceFunc = function() {
	  console.log('可以访问实例方法');
	}
}
// 添加静态方法
 Parent.staticFunction = function() {
    console.log('可以访问静态方法');
 }
 // 添加原型方法
 Parent.prototype.protoFunc = function() {
    console.log('可以访问原型方法');
 }
 // 生成实例化对象
 const parent = new Parent()
 // 方法调用测试
 console.log('/* 静态方法测试 */');
 console.log('构造函数', Parent.staticFunction);
 console.log('实例化对象', parent.staticFunction);
 console.log('/* 实例方法测试 */');
 console.log('构造函数', Parent.instanceFunc);
 console.log('实例化对象', parent.instanceFunc);
 console.log('/* 原型方法测试 */');
 console.log('构造函数', Parent.protoFunc);
 console.log('实例化对象', parent.protoFunc);
 console.log(Parent.prototype);