JavaScript 比较实例属性,静态属性,原型属性(一个例子巧妙阐述)

本文通过工厂和机器人的比喻,详细解释了JavaScript中的实例属性(每个实例独有)、静态属性(属于类本身)和原型属性(所有实例共享)。实例属性如名字、年龄,静态属性如工厂的占地面积,原型属性则是一类实例的公共属性,如机器人模板的特征。文章通过示例代码展示了它们的区别,并指出原型属性在内存中的共享特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实例属性,静态属性,原型属性

前提知识

首先要弄清楚,什么是实例属性,什么是静态属性,什么是原型

  • 类在new之后会产生一个实例,就像工厂做了一个机器人一样,而原型是这个工厂做机器人的模板。
  • 这个工厂可以制作一类机器人,简称为类
  • 原型是机器人的模板,是工厂制作的重要参照,但不是唯一参照(工厂可以对在模板之上进行二次加工)
  • 这个机器人是工厂参照模板并加以其他加工操作实际做出来的例子,所以叫实例。

接下来将以工厂和机器人为大家讲述(关于更多类似的例子请看我的其他文章)。

function RobotFactory(name,age){
	//实例属性
	this.name = name
	this.age = age
	this.a=function(){}
}
//原型
RobotFactory.prototype.sayHello=function(){
		console.log('Hello')
}
//静态属性
RobotFactory.area = '100平方米'

实例属性

实例属性是各个实例所独有的。
比如这里的名字,年龄是制造出来的机器人的,而不是这个工厂的名字,年龄。

var robot1=new RobotFactory('机器人1号',18)
console.log(robot1.name+'的年龄是'+robot1.age)

执行结果:
在这里插入图片描述

静态属性

静态的是指向类自身,而不是指向实例对象。
换句话说,这个占地面积的属性是工厂的属性,而不是机器人的属性。

console.log(RobotFactory.area)
console.log(robot1.area)

执行结果:
在这里插入图片描述

原型属性

原型属性又称公共属性,它不属于某个实例,而是所有实例的公共属性

var robot1=new RobotFactory('机器人1号',18)
var robot2=new RobotFactory('机器人2号',19)

if(robot1.sayHello===robot2.sayHello){
    console.log('他们公用一个方法')
}

执行结果:
在这里插入图片描述
'==='代表他们方法的地址也是一样的,即公用一块内存空间。实例属性无法达成这样的条件。

var robot1=new RobotFactory('机器人1号',18)
var robot2=new RobotFactory('机器人2号',19)

if(robot1.a===robot2.a){
    console.log('他们公用一个方法')
}else{
    console.log('他们不公用一个方法')
}

执行结果:
在这里插入图片描述

区别

  • 实例属性属于具体的某个实例对象
  • 静态属性属于类
  • 原型属性是所有实例对象的公共属性,存放在一块内存中。

关于原型的更多知识请移步一个例子讲清楚原型对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值