前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原型和原型链

原型和原型链

原创
作者头像
jade_
修改2021-04-28 14:35:52
5140
修改2021-04-28 14:35:52
举报
文章被收录于专栏:web前端记录

prototype(原型):prototype是Function对象的一个属性,它定义了构造函数制造出的对象的公用祖先(属性和方法),可以继承该原型的属性和方法。原型也是对象。

__proto__(隐式原型):没个对象的__proto__属性指向自身构造函数的prototype。

constructor(构造器):返回对创建此对象的数组函数引用。

原型链基本概念:每个对象都会在其内部初始化一个属性,就是 proto,当我们访问一个对象的属性 时,如果这个对象内部不存在这个属性,那么他就会去proto里找这个属性,这个proto又会有自己的proto,于是就这样 一直找下去,也就是我们平时所说的原型链的概念。

原型链--实现对象间的联系即继承的方法

代码语言:javascript
复制
//es5写法
var Person = function(name,age){
  this.name = name;
};
Person.prototype.sayName = function() {
  console.log('my name is'+this.name)
};
Person.prototype.age = 18;
var person = new Person();
person.sayName('jade');
代码语言:javascript
复制
//ES6写法:
class Person {
    constructor(name,age){
        this.name = name;
        this.age = age
    }
    sayName(){
        console.log(`my name is ${this.name}`)
    }
}
let person = new Person('jade', 18);
person.sayName()

//ES6的继承
class Son extends Person{
    constructor(){
        super();
    }
}

添加描述

代码语言:javascript
复制
// 结果
console.log(person.__proto__===Person.prototype); // true
console.log(person.constructor === Person); // true
console.log(Person.property.constructor === Person)
console.log(Person.prototype.__proto__ === Object.prototype); // true
console.log(Object.prototype.constructor === Object) // true
console.log(Object.prototype.__proto__ === null) // true

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档