`

prototype原型与__proto__隐式原型

 
阅读更多


javascript中对象就是属性的集合,函数也是一种对象。它也是属性的集合

 

js默认给函数一个属性--prototype。这个函数值是一个对象(属性的集合,再次强调),默认有一个叫constructor的属性,指向这个函数本身。



 

有一个函数function F(); var f = new F(); 这样f对象就可以调用F.prototype中的属性,因为每一个对象都有一个隐藏属性“__proto__”,这个属性引用了创建这个对象的函数的prototype即:f.__proto__ === F.prototype

这里的“__proto__”就是隐式原型

 

只要记住一句话:对象的隐式原型“__proto__”引用了创建这个对象的函数的prototype,再结合函数与对象关系一文,就能理解下面这张图(其中比较特殊的:Object.prototype.__proto__ 指向null,Function是被自身创建的,所以Function.__proto__ === Function.prototype)



 

  • 大小: 4 KB
  • 大小: 154 KB
分享到:
评论

相关推荐

    prototype与__proto__区别详细介绍

    2. **__proto__(隐式原型)** - `__proto__`是每个对象都有的一个内部属性,它指向该对象的构造函数的`prototype`。这意味着对象实例可以通过`__proto__`访问其构造函数原型中的属性和方法。 - 在JavaScript ES5...

    js prototype和__proto__的关系是什么

    关于它们之间的联系,`__proto__`和`prototype`都与原型链有关。当一个对象的`__proto__`指向一个函数的`prototype`时,它们就构成了原型链的一部分。例如,对于一个由`Person`构造函数创建的对象`person`,我们有`...

    javascript中的原型对象(prototype)和隐式原型(__proto__)

    每一个函数(除箭头函数外)天生自带一个prototype属性,该属性称之为原型对象(原型),是一个引用类型数据。 作用:保存将来使用该构造函数构造出来的属性和方法,构造出来的属性和方法可以被共享。 注意:在...

    第六课 原型与原型链-011

    首先,我们要区分"显式原型"(prototype)和"隐式原型"(__proto__)。`prototype`属性是每个函数(构造函数)都具有的,它指向一个对象,即函数的原型对象。这个原型对象通常用于存储实例对象可能继承的属性和方法...

    第十二课 继承-011

    当使用 `new` 关键字创建一个新的实例时,如 `var f1 = new Fn1()`,这个实例会有一个隐式原型 `f1.__proto__`,它指向了构造函数的原型对象。 实现继承的关键步骤是设置子类的原型对象为父类的实例。例如,`Fn2....

    js构造函数constructor和原型prototype原理与用法实例分析

    所有引用类型(函数,数组,对象)都拥有__proto__属性(隐式原型) 所有函数拥有prototype属性(显式原型)(仅限函数) 原型对象:拥有prototype属性的对象,在定义函数时就被创建 __proto__, prototype和...

    深入理解javascript原型和闭包1

    当我们创建一个新对象时,它的`__proto__`(隐式原型)会指向其构造函数的`prototype`。这使得新对象能够访问构造函数`prototype`上的属性和方法。 (4)——隐式原型`__proto__` `__proto__`是对象的内部属性,它...

    【JavaScript源代码】JavaScript 手动实现instanceof的方法.docx

    这个函数的工作方式是,首先获取传入对象`obj`的隐式原型`__proto__`,然后比较它与构造函数`constructor`的`prototype`。如果两者相等,说明`constructor`的`prototype`在原型链上,返回`true`。如果不等,则继续...

    非常有用的prototype实例

    在JavaScript中,`prototype`是一个核心概念,它与对象继承紧密相关。`prototype`机制是JavaScript实现面向对象编程的关键部分,允许我们为对象添加或扩展属性和方法。在这个"非常有用的prototype实例"中,我们可以...

    javascript原型和原型链

    2、所有的引用类型(数组、对象、函数)都有一个__proto__属性(隐式原型属性),属性值是一个普通的对象 console.log(array.__proto__); console.log(object.__proto__) console.log(func.__proto__) 3、所有的函数...

    JavaScript 原型链学习总结

    在JavaScript中,每个对象都拥有一个隐式的属性`[[Prototype]]`,它用于指向该对象的原型。这个原型也是对象,并且它也有自己的原型,这样就形成了一条从当前对象开始,沿着原型链向上追溯的过程。这条链最终会终止...

    原型链和构造函数.docx

    `__proto__`是对象的隐式原型,它直接指向`[[Prototype]]`。而`prototype`是函数的属性,用于创建新对象的原型。例如,当我们定义一个构造函数并添加方法到其`prototype`,新创建的实例可以通过`__proto__`访问这些...

    javaScript核心原理

    在这个例子中,`foo`对象有两个显式属性`x`和`y`,以及一个隐式的`__proto__`属性指向它的原型对象。 #### 原型链(Prototype Chain) **原型链**是一个由多个对象组成的链表,用于实现继承和共享属性。当查找一个...

    基于js中的原型、继承的一些想法.docx

    每个对象都会有一个隐式的`__proto__`属性,它指向该对象的原型对象。当尝试访问一个对象的属性时,如果该属性不存在于该对象本身,则会沿着原型链向上查找,直到找到该属性为止。 - **示例**: ```javascript ...

    深入浅出理解javaScript原型链

    本文将详细介绍原型链的概念、显式和隐式原型链、prototype和__proto__的概念以及new运算符在构造对象时的作用。 首先,JavaScript中的每个对象都有一个原型对象,这个原型对象本身也是一个对象,它也有自己的原型...

    js原型继承的两种方法对比介绍.docx

    3. **`__proto__`属性**:每个对象都有一个隐式的`__proto__`属性,指向它的构造函数的原型对象。 #### 三、继承原型对象 ##### 3.1 实现原理 当使用构造函数创建一个新对象时,这个新对象会自动获得构造函数的原型...

    js代码-手写instanceof

    在JavaScript中,每个对象都有一个隐式的 `__proto__` 属性,指向创建该对象的构造函数的原型对象。如果一个对象 `a` 的 `__proto__` 属性等于另一个对象 `b` 的 `prototype`,那么可以说 `a` 实例于 `b`。`...

    理解JavaScript的prototype属性

    JavaScript中的prototype属性是语言的一个核心概念,与原型继承机制密切相关。在理解prototype属性时,有几个关键点需要掌握: 1. 原型(Prototype)概念:在JavaScript中,几乎所有的对象都是通过另一个对象来继承...

    JavaScript中的原型prototype属性使用详解

    3. **`new`关键字的作用**:使用`new`关键字创建对象时,会隐式地将新对象的`__proto__`指向构造函数的`prototype`。 4. **`hasOwnProperty()`方法**:在检查对象是否拥有某个属性时,使用`hasOwnProperty()`可以...

Global site tag (gtag.js) - Google Analytics