首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

理解js中的原型链,prototype与__proto__的关系

首先,要明确几个点: 1.在JS里,万物皆对象。方法(Function)是对象,方法的原型(Function.prototype)是对象。因此,它们都会具有对象共有的特点。...最后,Object.prototype的__proto__属性指向null。 总结: 1.对象有属性__proto__,指向该对象的构造函数的原型对象。...那么__proto__是什么?我们在这里简单地说下。...每个对象都会在其内部初始化一个属性,就是__proto__,当我们访问一个对象的属性 时,如果这个对象内部不存在这个属性,那么他就会去__proto__里找这个属性,这个__proto__又会有自己的_..._proto__,于是就这样 一直找下去,也就是我们平时所说的原型链的概念。

1.2K80
您找到你想要的搜索结果了吗?
是的
没有找到

帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)

前言   作为一名前端工程师,必须搞懂JS中的prototype、__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞懂它们...但是由于JS中函数也是一种对象,所以函数也拥有__proto__和constructor属性,这点是致使我们产生困惑的很大原因之一。...每个函数在创建的时候,JS会同时创建一个该函数对应的prototype对象,而函数创建的对象....__proto__属性的作用就是当访问一个对象的属性时,如果该对象内部不存在这个属性,那么就会去它的__proto__属性所指向的那个对象(父对象)里找,一直找,直到__proto__属性的终点null...本文就此结束了,希望对那些对JS中的prototype、__proto__与constructor属性有困惑的同学有所帮助。

62820

轻松理解JS中的面向对象,顺便搞懂prototype和__proto__

这篇文章主要讲一下JS中面向对象以及 __proto__,ptototype和constructor,这几个概念都是相关的,所以一起讲了。...用函数代替,JS中最不缺的就是函数,函数不仅能够执行普通功能,还能当class使用。比如我们要用JS建一个小狗的类怎么写呢?...这就该__proto__上场了,当你访问一个对象上没有的属性时,比如myPuppy.say,对象会去__proto__查找。__proto__的值就等于父类的prototype, myPuppy....函数本身也是对象,也具有__proto__,他指向的是JS内置对象Function的原型Function.prototype。...prototype本身也是对象,所以他也有__proto__,指向了他父级的prototype。__proto__和prototype的这种链式指向构成了JS的原型链。

2.3K62

javascript 之 prototype与__proto__

首先,先介绍一个今天的主角:proto(隐式原型)与prototype(显式原型) 什么是__proto__和prototype?...__proto__(隐式原型) javascript 中任意对象都具有一个内置属性,在ES5之前并没有标准的方法访问这个属性,但是在绝大多数浏览器中都支持通过__proto__来访问这个属性,我们叫他隐式原型...prototype 和 __proto__之间的联系 首先我们来看一个例子: function Foo(){} var foo = new Foo(); foo....__proto__ === 其构造函数.prototype么, 答案是否定的,我们来看以下例子: let obj = {name: 'zarr'}; let sonObj = Object.create...ok,最后总结一下 1.对象有属性__proto__,指向该对象的构造函数的原型对象。 2.方法除了有属性__proto__,还有属性prototype,prototype指向该方法的原型对象。

21710

【说站】Javascript中对象原型 __proto__的介绍

Javascript中对象原型 __proto__的介绍 说明 1、所有对象都会有一个属性__proto__指向构造函数的prototype原型对象....之所以我们可以使用构造函数prototype原型对象的属性和方法,是因为对象有__proto__原型。 2、__proto__对象原型的意义在于为对象的搜索机制提供一个方向或一条路线....        var zxy = new Star('张学友', 19);         ldh.sing();         console.log(ldh); // 对象身上系统自己添加一个 __proto...Star.prototype);         // 方法的查找规则: 首先先看ldh 对象身上是否有 sing 方法,如果有就执行这个对象上的sing         // 如果么有sing 这个方法,因为有__proto...__ 的存在,就去构造函数原型对象prototype身上去查找sing这个方法      以上就是Javascript中对象原型 __proto__的介绍,希望对大家有所帮助。

44010

Jascript原型链以及Object和Function之间的关系

_proto__这个属性;constructor(构造方法)这个属性是在生成prototype时自动生成的属性,其指向函数本身(在申明函数时,js自动创建该函数的peototype属性)。...prototype它是一个对象(在声明函数变量是在函数内部由js自动创建),因此它也有__proto__,并且指向Object的prototype。...,然后用Function造出Object,因此Object的__proto__指向Function的prototype,然后js直接将Object的prototype替换为源型。...并且我认为js里判断继承(即A instanceof B)是沿着__proto__往下走,首先要求B必须有prototype属性且必须是一个对象(否则会浏览器会报 'prototype' property...“js里一切皆对象”倒不如所是js里的所有对象都是由“源型”生成。 原文:https://blog.csdn.net/backee/article/details/83378772

70720

一句话读懂原型 、原型链(__proto__、prototype)

先属性明确几个概念 prototype: 原型,函数的一个属性,它本身就是一个对象 {} __proto__: 原型链,通过 __proto__ 可以把互相继承的对象的原型链接起来... 原型、原型链 __proto__ __proto__ 是每个对象都具有的属性,它指向该对象所继承的原型对象。...或者可以这样说: 对象的 __proto__ 指向对象的构造函数的原型对象 例 1.1 function Person() { } let person1 = new Person(); person1...__proto__ === Person.prototype // true /** * 解释: * - person1 对象具有__proto__属性和 Person 构造函数。...该原型对象也有一个自己的原型对象(__proto__),层层向上直到一个对象的原型对象为 null,通过__proto__一层一层像链条一样向上链接原型对象,我们可以称这条链为原型链。

22530

JavaScript入门总结——第二弹学习对象,分清__proto__、prototype

JS的世界中没有对象是万万行不通的,因为JS中几乎所有的事物都是对象,不了解对象,怎么了解JS呢~ 不要伤感,生活中没有对象,来这里new呀!...---- 说到这了,就加一个彩蛋吧,如果大家看过控制台,想必对__proto__并不陌生,是不是觉得__proto__和prototype有点相似呢,我们来比较一下:首先__proto_...但是我们说过JS中万物皆对象,所以函数也拥有__proto__和constructor,我们首先看一下定义: prototype: 显式原型,每个函数都有prototype属性,它指向的是其创建的实例对象的原型...__proto__: 隐式原型,当访问一个对象的属性时,如果该对象内部不存在这个属性,那么就会去它的__proto__属性所指向的那个对象(父对象)里找,一直找,直到__proto__属性的终点null...JS对象中除了null以外的所有对象都有__proto__属性,这个属性指向对象原型: function GirlFriend(){} var gf = new GirlFriend() gf.

43430

为什么 JS 中的对象字面量很酷

JS 是基于原型的,为什么要用原型创建对象那么麻烦? 幸运的是,JS 也在慢慢完善。JS 中很多令人沮丧的问题都是逐步解决的。...image.png 在对象字面量中只能使用__proto__一次,否则 JS 会报错: var object = { __proto__: { toString: function() {...JS 约束只能用一个对象或 null 作为 __proto__ 属性的值。 任何使用原始类型(字符串,数字,布尔值)或 undefined 类型都将被忽略,并且不会更改对象的原型。...因为仅允许将对象或 null 用作原型,所以__proto__值将被忽略,但 objUndefined 和 objNumber 仍具有其默认原型:纯 JS 对象 {}, 。...3. super 的使用 JS 一个有趣的改进是使用 super 关键字作为从原型链访问继承的属性的能力。

1K10
领券