美文网首页
关于js原型Prototype的理解

关于js原型Prototype的理解

作者: 现_状 | 来源:发表于2019-03-15 14:03 被阅读0次

深入理解可参考
首先说下什么是js原型:

  js每声明一个function,都有prototype原型,prototype原型是函数的一个默认属性,在函数的创建过程中由js编译自动添加;

也就是说:当产生一个function对象的时候,就有一个原型prototype,prototype的属性值是一个对象,是属性的集合,这个属性是一个指针,指向一个对象(例:Person.prototype就是原型对象),记住只有函数才有,并且通过bind()绑定的也没有。

这样的好处是:通过该构造函数生成的实例所拥有的方法都是指向一个函数的索引,这样可以节省内存。

下面有两个例子分别打印了普通对象和函数:

        var a ={}
        console.dir(a)
        var b=function () {

        }
        console.dir(b)
1.png
除了prototype外,对象还有个隐式属性proto:

(Function.prototype)是对象。因此,它们都会具有对象共有的特点。即:对象具有属性proto,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法。

两者的联系与区别:

隐式原型指向创建这个对象的函数(constructor)的prototype

js里所有的对象都有proto属性(对象,函数),指向构造该对象的构造函数的原型。
只有函数function才具有prototype属性。这个属性是一个指针,指向一个对象,这个对象的用途就是包含所有实例共享的属性和方法(我们把这个对象叫做原型对象)。原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指回原构造函数。

作用是什么:

显式原型的作用:用来实现基于原型的继承与属性的共享。

隐式原型的作用:构成原型链,同样用于实现基于原型的继承。举个例子,当我们访问obj这个对象中的x属性时,如果在obj中找不到,那么就会沿着proto依次查找。

相关文章

  • 关于js原型Prototype的理解

    深入理解可参考首先说下什么是js原型:  js每声明一个function,都有prototype原型,protot...

  • prototype

    prototype 参考链接 mdn constructor 一张图理解JS的原型(prototype、proto...

  • JS中继承的实现

    JS中继承的实现 #prototype (js原型(prototype)实现继承) 全局的Function对象没有...

  • js中this的指向和new的使用

    注意:其实js和css的比较是为了让读者能够更好的理解原型(prototype)是什么

  • js中的prototype

    prototype翻译过来是原型的意思,在js中特指对象的原型prototype对象是js实现面向对象的一个重要机...

  • prototype小结

    ### prototype 小结 - 构造函数有prototype属性指向其对应的原型对象: ```js // a...

  • 2018-01-08 关于javascript原型链的思考

    原型链 prototype prototype的验证几种方法 理解 prototype http://www.ru...

  • js基础(三)

    js基础 原型链和原型对象 ... ... js没有继承原型对象prototype通常用来添加公共的属性或行为且只...

  • __proto__ 和 prototype ➡️ 原型链继承

    参考文章: 从proto和prototype来深入理解JS对象和原型链 写在前面的自己的理解: 每个函数都有自己的...

  • JS原型-prototype

    为了避免自定义构造器中每一个对象都拥有完全一样的属性和方法造成内存耗用的问题,我们可以通过原型将其中共享的部分都放...

网友评论

      本文标题:关于js原型Prototype的理解

      本文链接:https://www.haomeiwen.com/subject/peblmqtx.html