对于Javascript原型的理解

本文详细解释了JavaScript中函数的prototype属性及其作用,探讨了如何利用原型对象为特定类型的实例共享属性和方法,并介绍了实例与原型之间的连接方式。

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

  我们创建的每一个函数都会有一个prototype属性,这个属性是一个指针,指向的是一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。

   即  function Person( ) {...};   这个函数就有了一个prototype属性,调用这个属性就会指向一个对象,可以暂时理解为空对象。

Person.prototype = { }; 所以我们可以为他添加属性以及方法。

深入的理解原型对象

  当我们创建一个新函数的时候,我们知道会有一个prototype属性随之产生,它指向的是这个函数的原型对象。并且再默认的情况之下,原型对象会自动的获得一个constructor属性,这个属性也是一个指针,它指向的是prototype属性所在的那个函数。

   上面的例子  Person.prototype.constructor = Person;

  在我们定义一个新实例的时候,该实例的内部将包含一个指针(内部属性),指向构造函数的原型。

  例如: var Person1 = new Person( )    这时Person1的内部会产生一个__proto__内部属性,指向构造函数的原型对象。

即 Person1.__proto__ = Person.peototype.

需要注意的是我们虽然可以通过对象实例访问保存在原型中的值,但却不能通过对象实例修改原型中的值。如果我们修改了对象实例中的值,可以再通过delete删除这个实例属性。

hasOwnProperty() 可以检测一个属性是存在与实例中还是存在于原型上。这个方法是从Object当中继承来的,如果属性存在于实例中返回true。

in操作符: 检测一个属性能不能访问的到,如果能返回true,不论这个属性是在实例中还是在原型中。

 

  

                  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值