原型链

Posted shiyun32

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原型链相关的知识,希望对你有一定的参考价值。

一、概述

原型链:

        每个对象都可以有一个原型_proto_,这个原型还可以有它自己的原型,以此类推,形成一个原型链。查找特定属性的时候,我们先去这个对象里去找,如果没有的话就去它的原型对象里面去,如果还是没有的话再去向原型对象的原型对象里去寻找...... 这个操作被委托在整个原型链上,这个就是我们说的原型链了。

 

构造函数:

采用new关键字调用,eg: let p = new Person(),调用函数时会创建对象,函数内部this指向创建的对象p,默认返回新创建的实例对象。

普通函数:

直接调用 let p = cat(),调用函数时不会创建对象,函数内部指向调用它的对象,没有指明调用对象,则指向window,没有返回值。

 

二、使用

1. 构造函数指向

技术图片
function foo() {
    var f2 = new foo2(); //使用构造函数调用foo2() ,f2中为foo2()的返回值
    f2.name = ‘李一桐‘
    console.log(f2); // {a: 3, name: "李一桐"}
    console.log(this); //在foo中未指明调用对象,则this 指向 window
    return true;
}
function foo2() {
    console.log(this);// 在foo()中进行了实例化,this指向  foo2的实例对象 foo2 {}
    return {a: 3};
}
var f1 = foo(); //使用普通函数调用foo(),f1存储返回值
console.log(f1);// true
View Code

 

 

参考:

js普通函数与构造函数的区别

JS中的原型和原型链(图解)

 

以上是关于原型链的主要内容,如果未能解决你的问题,请参考以下文章

初始原型链

web前端:理解js原型链

面向对象中的原型和原型链

对原型链的理解 语言表达能力不好 直接用代码,哈

JavaScript之粗浅原型和原型链

300行ABAP代码实现一个最简单的区块链原型