简答js 原型与原型链

本文深入探讨JavaScript中的原型和原型链概念。每个函数都有prototype属性,对象在创建时会关联原型并继承其属性。当对象重写属性时,将使用新值。__proto__属性用于访问对象的原型,而constructor指向关联的构造函数。原型链允许通过__proto__追溯到Object.prototype,直至null。这一机制减少了内存消耗,实现了属性共享。
摘要由CSDN通过智能技术生成

prototype:原型对象

  每个函数都一个prototype属性,

  每一个对象(null除外)在创建的时候就会与之关联另一个对象,

  这个对象就是我们所说的原型,每一个对象都会从原型"继承"属性。

  但如果对象自己重写了属性,那么就会采用新的属性值

 

  代码展示:

// 构造函数
function Person() {

}

// prototype是函数才会有的属性
Person.prototype.name = 'Kevin';

// 创建对象
var person1 = new Person();
var person2 = new Person();

// 对象会继承原型中的属性
console.log(person1.name) // Kevin
console.log(person2.name) // Kevin
  •   在原型中创建了属性name

  •   创建了对象后没有定义任何属性。

  •   通过读取name,还是可以获取值,也就是原型中name的值

  •   因此原型自身是一个对象, 可以用来存放实例对象的共有属性值,或者默认属性

  •   目的是减少不必要的内存消耗

 

proto:获取自己的原型

 

    每一个对象都有的属性,会指向这个对象的原型。

    存放的是原型的地址。

function Person() {

}
var person = new Person();
console.log(person.__proto__ === Person.prototype); // true

 

  原型构造器

   每个原型都有一个 constructor 属性指向关联的构造函数 实例原型指向构造函数

   

function Person() {

}
console.log(Person === Person.prototype.constructor); // true

 

 

原型链

对象通过__proto__,查询自身类型的原型。

可以一直追溯到Object的原型

而Object原型再往上查询就是null了。

而这个追溯路程就是原型链了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值