原型链

JavaScript的原型及原型链

喜夏-厌秋 提交于 2021-02-09 12:07:38
许多人对JavaScript的原型及原型链仍感到困惑,网上的文章又大多长篇大论,令读者不明觉厉。本人小学时语文拿过全校第一名,我将用最简洁明了的文字介绍JavaScript的原型及原型链。 什么是原型: 每一个对象都有原型,使用 __proto__ 标记,原型是一个对象的引用或 null ( Object. prototype 的原型为 null ),允许对象使用其原型所引用的对象中的变量。 var fun = function(){} fun.prototype.a = 1; var obj = new fun(); obj.a; //1 原型的来源: 对象的原型来自其构造函数的原型属性(用 prototype 标记)的引用。注意原型与原型属性是两个概念。 Function 为实例( function )定义了原型属性,其中包含一个构造函数(默认是 function 对象自己,用于构造 function 自己的实例),因此所有 function 都有原型属性。 Function 将自己的 的原型属性的引用作为 function 的原型 。 new 一个 function ,function 的实例便有了原型,指向 function 的原型属性。 有码: var fun = function(){ this.a= 1; } fun.prototype.b = 2; var obj

js 原型链与原型

北战南征 提交于 2019-11-28 15:05:25
原型对象 javascript语言是一种面向对象的语言,它没有"子类"和"父类"的概念,里面所有的数据类型都是对象,如何将这些对象联系起来呢? Brendan Eich在考虑设计继承机制的时候,参考了C++和JAVA使用new命令,通过调用类的构造函数生成实例的方式,将new命令引入javascript。 C++的写法是: ClassName *object = new ClassName(param); Java的写法是: Person person = new Person();    但是,javascript里面没有“类”这个概念,那么,Brendan Eich决定直接在new后面跟一个构造函数,来生成实例。 构造函数是什么?构造函数与其他函数唯一的区别在于调用方式不同。任何函数只要通过new来调用就可以作为构造函数,它是用来创建特定类型的对象。 下面定义一个构造函数Female: function Female(name){ this.name = name; this.sex = 'female'; } 通过new命令来生成一个person实例: var person1 = new Female("Summer") 这里,构造函数Female就是实例对象person1的原型!!!Female里的this关键字就指的是person1这个对象!