js原型初窥-伪类模式

  JavaScript中是没有类的

一.JavaScript 语言本身是没有类的,js类是通过对象模拟的。
二.JavaScript 的对象和构造类没有关系

JavaScript 构造函数就是一个伪类模式

在java 中构造函数改变 实例对象也会改变,《java编制思想》中上溯造型、继承 等原理 严格明确了 类与对象的引用关系
然而在JavaScript 中存在的只有对象引用,却没有真实的类。虽然 js都可以模拟出来继承、封装 等原理。

JavaScript 构造函数为什么是一个伪类?

<script type="text/javascript">
		function Preson(){}
		var p1 = new Preson();
		Preson.prototype = {name : 'liu'}//修改Preson实例对象的原型对象
	Preson.prototype.constructor = Preson;//把实例对象的原型对象构造指向自己
		var p2 = new Preson();
		console.log(p1.constructor === p2.constructor);//true
		console.log(p1.__proto__ === p2.__proto__);//flase
</script>

1.构造函数的实例在创建时,不是引用。而是完完全全的复制了一遍。

这是我根据上述代码手绘的一张图



Preson构造函数就是自定义构造器,new 出来的实例1,其实和实例 根本不是一种引用关系,可以理解为照着自定义构造器
的模子copy的一份 互不干扰的实例。 当我们修改Preson的prototype其实实例1根本不受任何影响,当我们把实例对象原型的构造
也修改为Preson本身,实例1还是不受任何影响,虽然实例1可以通过constructor找到已经被修改的原型。但是实例1的原型早在被
new出来的时候就已经确定了。 实例2的出现 又是独立的一份。 足以说明JavaScript 的类 继承都是通过对象模拟出来的。所以构造函数就是一个伪类

我会在近2天 总结继承,也会画出底层原型关系图,喜欢的点个关注。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值