原型(1)------------自我理解

什么是原型?

每一个js对象都和另外一个对象关联,这另外个对象就是“原型”----------js权威指南。。。。哈???这就叫原型啊???excuse me???

只要创建了一个新函数,就会为该函数创建一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法-----------js高级程序设计。。。。嗯,,,,嗯?????

来创建个对象:

function Person(){};  //创建函数

var person1=new Person;  //创建对象(实例)

关键字new后跟随一个函数调用,这里的函数称为构造函数。构造函数用以初始化一个新创建的对象。

按照字面意思来理解,prototype 就是通过调用构造函数而创建的那个对象实例的原型对象--------------js高级程序设计。。。。

创建函数的时候:

  自动创建一个prototype属性,Person.prototype就是原型对象,是原型也是对象。而且这个原型对象会自动获得一个constructor(构造函数)属性,这个属性包含一个指向prototype属性所在函数的指针,通俗来讲就是原型对象的constructor属性指向创建该原型对象的函数 即:Person.prototype.constructor===Person。

创建实例的时候:

  当使用构造函数创建一个新实例后,该实例的内部将包含一个指针,指向构造函数的原型对象。ECMA-262 第 5 版中管这个指针叫[[Prototype]]。虽然在脚本中没有标准的方式访问[[prototype]],即没有这种方式person1.[[prototype]]。但是Firefox、 Safari 和 Chrome 在每个对象上都支持一个属性__proto__,可以通过这个属性来访问原型。而其他的浏览器对这个属性是不支持的。

  虽然无法访问[[protytpe]],但是可通过 isPrototypeOf()或者Object.getPrototypeOf()来确定对象之间是否存在这种关系。

  例:Person.prototype.isPrototypeOf(person1)  结果为true,说明a的原型对象就是Person.prototype

    Object.getPrototypeOf(person1)===Person.prototype  结果还是为true,说明a原型对象就是Person.prototype

如图:

Person的prototype指向了原型对象,那么我把它理解为Person.prototype就是原型对象。实例person1和person2都包含一个内部属性[[prototype]],该属性指向Person.prototype,也就是说他们与构造函数Person没有直接的关系。

有点难理解,看了很多有关原型的解释。。。。我还是用自己的方式来理解这个原型吧!原型(2)------------自我理解

原文地址:https://www.cnblogs.com/zjjDaily/p/8297589.html

时间: 2024-10-09 10:30:55

原型(1)------------自我理解的相关文章

原型(2)------------自我理解

接上一篇原型(1)------------自我理解 以下是我自己对自定义函数,内置构造函数Object().Function(),原型prototype与__proto__它们的联系的理解: Js里有许多内置的构造函数,例如:Object(),Function(),Date(),Array()等 1. 每个对象都有一个__proto__属性,该属性指向创建这个对象的函数的prototype. (这里就没管IE,直接用__proto__属性,这样好理解一点) 2. 每个函数都有一个prototyp

对原型链的理解 语言表达能力不好 直接用代码,哈

分享一下 我对原型和原型链的理解 原型对象: function People(nameValue,ageValue,fondValue)            {                this.name = nameValue;                this.age = ageValue;                this.fond = fondValue;            } People.prototype.rule = function()         

谈谈对Javascript构造函数和原型对象的理解

对象,是javascript中非常重要的一个梗,是否能透彻的理解它直接关系到你对整个javascript体系的基础理解,说白了,javascript就是一群对象在搅..(哔!). 常用的几种对象创建模式 使用new关键字创建最基础的对象创建方式,无非就是和其他多数语言一样说的一样:没对象,你new一个呀! var gf = new Object(); gf.name = "tangwei"; gf.bar = "c++"; gf.sayWhat = function

Java内部类的自我理解

本文借鉴网络上多位大牛的博客和文章,感谢各位不知名人士的分享. 一.什么事内部类? 内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的成员,并且依附于外部类而存在的.内部类可以为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限).内部类主要有以下几类:成员内部类.局部内部类.静态内部类和匿名内部类. 二.需要内部类? 典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建其的外围类的对象.所以你可以认为内部类提供了某种进入其

对Javascript中原型的深入理解

  理解原型对象 在Javascript中无论什么时候,只要创建一个新的函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象(这个对象的用途是包含可以有特定类型的所有实例共享的属性和方法).如果按照字面上的意思来理解,那么原型属性就是通过调用构造函数而创建的那个对象的实例的原型对象. 在默认的情况下,所有的原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向prototype属性所在函数的指针.如下图 function P

原型链的理解

### 原型链的理解 #### 概念 + javascript每一个对象**包括原型对象**都有一个内置的`proto`属性指向创建他的函数对象的原型对象,即`prototype`属性 #### 作用 + 实现对象的继承 ### 理解 1.函数对象 + 在javascript中,函数就是对象 2.原型对象 + 当定义一个函数对象的时候,会包含一个预定的属性,`prototype`,这就属性称之为原型对象 3.\__proto__ + javascript 在创建对象的时候,都会有一个\_prot

面向对象(2 )构造函数 原型 原型链的理解

面向对象(2) 原型 原型链的理解 1.面向对象的目的就是生成对象object. 2.生成对象的方式 (1)单例模式(字面量定义)var obj={} (2)类的实例 var obj=new Object() (3)工厂模式 (4)构造函数 工厂模式和构造函数的区别? 工厂模式,生成的对象必须要返回,构造函数模式不用return,构造函数模式默认return旳是this,在构造函数内的this就是实例对象. 构造函数如果人为return的不是对象,直接忽略,如果人为return的是对象,就取代t

javascript关于原型的深刻理解

Javascript继承机制的设计思想 作者: 阮一峰 日期: 2011年6月 5日 我一直很难理解Javascript语言的继承机制. 它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instance)的区分,全靠一种很奇特的"原型链"(prototype chain)模式,来实现继承. 我花了很多时间,学习这个部分,还做了很多笔记.但是都属于强行记忆,无法从根本上理解. 直到昨天,

JS原型链的理解

<JavaScript高级程序设计>是一本好书,下面总结一下书中关于原型链的讲解. 本文从对象的创建开始,逐渐引出原型链的背景.作用以及ECMA对原型链的定义1.理解对象两种常用的创建对象的方法之一是new一个Object对象,并为它添加属性和事件var person = new Object();person.name = "wzk";person.age = 24;person.sayName = function(){ alert(this.name);}; 另一种是