美文网首页JavaScriptjavascript
js构造函数与原型对象的区别与联系

js构造函数与原型对象的区别与联系

作者: 留七七 | 来源:发表于2016-10-19 00:44 被阅读161次

建议阅读本篇之前先了解原型对象和构造函数的概念,你可以看JS链知多少?了解原型,看学好js,这些js函数概念一定要知道了解构造函数。

首先看个例子:

   var ary = new Array();

js中构造函数是用来初始化对象的,所以每个对象都会有一个构造函数,上例中ary的构造函数就是Array。js中每个对象都会有一个constructor属性,这个属性的值就是相应对象的构造函数。所以下面的表达式成立:

   ary.constructor === Array   // true

由于js中函数也是对象,所以构造函数Array也有constructor属性,所有的构造函数对象都是系统构造函数Function初始化来的,所以下面的表达式也成立:

   Array.constructor !== Array     //true
   Array.constructor === Function    //true

js中每一个对象都会有一个原型对象与之对应,并且从原型对象上继承属性。由此可见上例中ary对象的原型对象来自于构造函数Array,在js中可以通过构造函数的prototype属性来获得原型对象的引用,因此ary对象的原型对象即是Array.prototype,也即ary对象属性继承自Array.prototype对象。因为每个对象都继承自原型对象,所以所有的构造函数(扩展开来应该是js中所有的函数)都有prototype属性,并且只有函数对象才有prototype属性;以上,由于ary对象的原型对象来自于构造函数Arrayprototype属性,所以下面的表达式也成立:

   Array.prototype.constructor === Array     //true

由此可以得出的结论:

  • js中函数对象都有prototype,constructor属性;普通对象都有constructor属性,没有prototype属性,由JS链知多少?这篇文章可知,普通对象用__proto__属性表示原型对象;
  • 下面的表达式都是成立的:
     ary.constructor === Array  //true
     ary.constructor === Array.prototype.constructor  //true
     ary.constructor.prototype === Array.prototype   //true
     Array.prototype.constructor === Array   //true
     Array.constructor === Function  //true

全文完

相关文章

  • js构造函数与原型对象的区别与联系

    建议阅读本篇之前先了解原型对象和构造函数的概念,你可以看JS链知多少?了解原型,看学好js,这些js函数概念一定要...

  • 原型概念

    神秘对象称与构造函数 神秘对象就是构造函数的 "原型属性"简称原型 (构造函数的原型) 神秘对象与构造函数所创建出...

  • 面向对象之原型链继承(一)

    一. 原型与构造函数 Js所有的函数都有一个prototype属性,这个属性引用了一个对象,即原型对象,也简称原型...

  • 第六章 创建对象

    构造函数 constructor和instanceof区别 构造函数和普通函数区别 原型模式理解原型对象isPro...

  • 深入理解JavaScript对象

    对象的种类 函数对象与普通对象 构造函数与原型对象 prototype 与__proto__ prototype ...

  • 2020-12-15

    js对象的创建和函数 创建对象 工厂模式 构造函数 原型方式+构造函数

  • 原型与原型链

    构造函数与原型 JavaScript 语言使用构造函数(constructor)作为对象的模板。所谓”构造函数”,...

  • js原型链/instanceof原理/new运算符

    1、对象的创建 2、原型、原型链、实例、构造函数的关系 prototype 表示原型对象,是区别于构造函数本身的...

  • 面向对象(四)构造函数的原型对象

    构造函数的原型对象 01 什么是原型对象在使用构造函数创建对象的时候,默认会生成一个与构造函数相关联的对象,这个对...

  • 2021-04-15

    Js构造函数、原型、原型链整理 1,普通函数、构造函数区别: 1,名字: 构造函数首字母建议大写,普通函数首字母建...

网友评论

    本文标题:js构造函数与原型对象的区别与联系

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