原型/原型链(二)

本文深入探讨了JavaScript中__proto__与Person.prototype的关系,解释了为何不应重新赋值父类原型以避免内存浪费。同时,详细介绍了Object.prototype提供的各种方法,如hasOwnProperty, isPrototypeOf等,帮助理解对象原型链的工作原理。

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

在这里插入图片描述
这里的意思是__proto__指向的内存指针与Person.prototype一致。
当Person.prototype再次被赋予另外一个内存空间的时候,原有的空间并没有被释放。
__proto__任然指向原来的内存空间。
所以当想要改变父类祖先的属性的时候,千万不要再次赋予新的内存空间。
在这里插入图片描述
此处便是祖先指向另外一块内存空间。
在这里插入图片描述
可以通过直接修改属性值去改变父类祖先的属性。

以下是原型链的基本表达方式,通过一系列的祖先的扣合,形成了一条原型链。
在这里插入图片描述

所有对象最终的原型指向Object.prototype

一致最终原型的方法如下

方法
Object.prototype.defineGetter()
关联一个函数到一个属性。访问该函数时,执行该函数并返回其返回值。

Object.prototype.defineSetter()
关联一个函数到一个属性。设置该函数时,执行该修改属性的函数。

Object.prototype.lookupGetter()
返回使用 defineGetter 定义的方法函数 。

Object.prototype.lookupSetter()
返回使用 defineSetter 定义的方法函数。

Object.prototype.hasOwnProperty()
返回一个布尔值 ,表示某个对象是否含有指定的属性,而且此属性非原型链继承的。

Object.prototype.isPrototypeOf()
返回一个布尔值,表示指定的对象是否在本对象的原型链中。

Object.prototype.propertyIsEnumerable()
判断指定属性是否可枚举,内部属性设置参见 ECMAScript [[Enumerable]] attribute 。

Object.prototype.toSource()
返回字符串表示此对象的源代码形式,可以使用此字符串生成一个新的相同的对象。

Object.prototype.toLocaleString()
直接调用 toString()方法。

Object.prototype.toString()
返回对象的字符串表示。

Object.prototype.unwatch()
移除对象某个属性的监听。

Object.prototype.valueOf()
返回指定对象的原始值。

Object.prototype.watch()
给对象的某个属性增加监听。

Object.prototype.eval()
在指定对象为上下文情况下执行javascript字符串代码,已经废弃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值