js中的原型及原型链

学习js这么久,一直对js原型半知半解。今天就将自己所看到的相关文章整理并记录下。

1.什么是原型

a.每一个对象都有原型,使用属性_proto_引用,(除了null)。用于指向创建它的构造函数的prototype

b.原型就是该对象表示从哪里继承。通过它可以实现属性继承。


2. _proto_和prototype 的区别

_proto_:是每一个对象都有的属性。原型链中真正起作用的是_proto_。

prototype:是函数才有的属性。


3.构造函数

  • 与普通函数相比,构造函数并没有任何特别的地方,首字母大写只是我们约定的小规定,用于区分普通函数;
  • new关键字让构造函数具有了与普通函数不同的许多特点,而new的过程中,执行了如下过程:
    1. 声明一个中间对象;
    2. 将该中间对象的原型(_proto_)指向构造函数的原型(prototype);
    3. 将构造函数的this,指向该中间对象;
    4. 返回该中间对象,即返回实例对象。.
4.constructor
所有的原型都有一个constructor属性,该属性对应创建所有指向该原型的实例的构造函数。
函数和原型通过prototype和constructor属性进行相互关联.


  Function.prototype.constructor === Function //true
  Object.prototype.constructor === Object //true

// 声明构造函数
function Person(name, age) {
    this.name = name;
    this.age = age;
}

// 通过prototye属性,将方法挂载到原型对象上
Person.prototype.getName = function() {
    return this.name;
}

var p1 = new Person('tim', 10);
var p2 = new Person('jak', 22);
console.log(p1.getName === p2.getName); // true




5.原型链




6.原型VS构造函数

通过构造函数设置的属性,是每个实例对象私有的属性,无法共享。

通过原型继承来的属性,是各个实例对象共享的属性,是共有的


相关网页:

http://www.108js.com/article/article1/10201.html?id=1092

https://juejin.im/post/5835853f570c35005e413b19

http://www.jianshu.com/p/15ac7393bc1f

http://www.jb51.net/article/80109.htm


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值