所有对象都有prototype,prototype自身也是对象,它有prototype,这样就形成了prototype链。当遇到有链中为null时,链就终止了,object的prototype就是null. 上面内容http://www.javaeye.com/article/53537有介绍, 然而有太多问题需要想明白了。 prototype它是一种数据结构,还是别的什么。 function class1(name) {     this.class1Name=name; } function class2(name) {     this.class2Name=name; } function class3(name) {    this.class3Name=name; } class3.prototype=new class1('class1');//把一个对象class1替换(用这个词感觉不对)prototype class3.prototype.abc='abc';然而此时还能通过prototype添加属性。 目前按照我的理解,prototype不是一个简单的对象。 class3.prototype=new class2('class2');//这一步后abc属性就不存在了。 接下来说一下对象对属性的访问。 这个是上面链接中的原话: 读操作会读取在obj自己和prototype 链上发现的第一个同名属性值 写操作会为obj对象本身创建一个同名属性(如果这个属性名不存在 这里要注意同名属性,如下 function class1() {    this.className='class1'; } function class2() {} class2.prototype=new class1(); alert(new class2().className)//这里结果为class1;说明访问到了class1中的className属性。 class2.prototype.class1=new class1(); alert(new class2().className)//这里结果为undefined,说明没有访问到className属性。 所以在属性访问上是根据属性名的,就算这个属性held的是一个对象。而不会去访问到下面的prototype中去。 下面说一下this这个关键字。 function class1(name) {     this.user=name; } class1.prototype= {     firstName:function()         {             return this.user;         } } function class2(name) {     this.name=name; } class2.prototype=new class1('class1'); alert(new class2('class2').firstName());//这里结果应该能想到是class1. 但是如果这样写,把function class1的的代码改成如下: function class1(name) {    this.name=name; } class1.prototype= {    firstName:function()       {          return this.name;       } }

alert(new class2('class2').firstName());//此时输出的结果就是class2; 开始class2访问firstName方法,它便在自己成员中查找,没有找到,就在prototype中查找。这时它在class1中找到了fristName 而class1中firstName方法返回this.name,这个this指的还是class2.所以它又会在class2的成员中查找。所以这里的结果是class2; 对JavaScript一直都不太清楚,现在更迷惑了。希望明白人说一下。 另外Function 和Object是个奇怪的东西。

JavaScript的prototype是什么相关推荐

  1. JavaScript 笔记 ( Prototype )

    这阵子实在好忙 ( 这样说好像也不是一两个月了... ),然后因为工作伙伴都是 JavaScript 神之等级的工程师,从中也学到不少知识,毕竟就是要和强者工作才会成长呀!为了想好好瞭解他们写的程式码 ...

  2. JavaScript原型Prototype详情

    文章来源: 学习通http://www.bdgxy.com/ 目录 1.概述 1.1原型是什么 1.2获取原型 2.原型属性 2.1利用原型添加属性与方法. 2.2访问原型属性原型方法 3.自有属性与 ...

  3. Javascript的prototype

    JavaScript是基于对象的,任何元素都可以看成对象.然而,类型和对象是不同的.本文中,我们除了讨论类型和对象的一些特点之外,更重要的是研究如何写出好的并且利于重用的类型.毕竟,JavaScrip ...

  4. JavaScript:Object.prototype.toString进行数据类型判定

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Obje ...

  5. JavaScript 面向对象 (prototype 原型模式)

    一. JavaScript 设计思想 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版.这是历史上第一个比较成熟的网络浏览器,轰动一时.但是,这个版本的浏览器只能用来浏览 ...

  6. JavaScript的Prototype实现

    作者:Jeff.Yan(阎宏),BlueSwing.Liu(刘如鸿) 模式: Prototype(原始模型模式或者原型模式)                   定义: 通过给出一个原型对象来指明所要 ...

  7. JavaScript:Object.prototype.toString方法的原理

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Obje ...

  8. JavaScript:prototype属性使用说明

    prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,而且特殊的地方便在于:它是一个给类的对象添加方法的方法!这一点可能听起来会有点乱,别急,下面我便通过实例对这一特殊的 ...

  9. javascript之prototype原型属性案例

    练习: 给字符串对象添加一个toCharArray的方法,然后再添加一个reverse(翻转)的 方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

  10. 我所知的javascript之prototype

    一:prototype大概概念和用途 "prototype"字面翻译是"原型",是javascript实现继承的主要手段.粗略来说就是:prototype是ja ...

最新文章

  1. 分布式概念-如何访问到分布式系统中的服务
  2. 读写位宽不同的FIFO,数据输入输出顺序是怎么样的?BRAM又如何呢?
  3. 不使用vue-cli来创建项目
  4. On Perseverance
  5. linux终端默认密码是多少,linux基础懂多少?两个小问题考考你
  6. shell中的${},##和%%的使用
  7. Java 8流中的数据库CRUD操作
  8. gradle官方文档_Spring Boot+Gradle+MyBatisPlus3.x搭建企业级的后台分离框架
  9. Spring JdbcTemplate示例
  10. 流量中转的服务器,你的服务器能承受多大流量
  11. 解决tab切换的时候,swiper不生效
  12. 云服务器更换系统后tomcat,如何对云服务器装tomcat
  13. 电脑怎么彻底删除软件_电脑强力卸载工具,删除电脑无用软件,让电脑更加快捷顺畅...
  14. 匹夫细说C#:从园友留言到动手实现C#虚函数机制
  15. 微信测试点(八大点)
  16. 中国气象台API(2017.09)
  17. 右键文件一直转圈卡死
  18. 白墙挂什么画 超美的6款白墙挂画选择推荐
  19. 服务器选云主机还是VPS主机呢?
  20. vue 单页面背景图片设置

热门文章

  1. unity 刘海屏适配问题
  2. 信息通信研究院徐志发:区块链金融的“一升一降三创新” | 数博会2017
  3. 计算机组成原理 | 存储系统
  4. ios html 编码转换,iOS开发表情符号emojiUTF-8编码、Unicode、HTML显示
  5. Java代码弱点与修复之——Suspicious calls to generic collection methods
  6. cf----2019-10-20(Consecutive Subsequence,Almost Arithmetic Progression,Mentors)
  7. 量化投资学习——读书笔记
  8. 三种命名规则之-----匈牙利命名规则
  9. CentOS 7安装“linuxqq“
  10. 视力仅剩0.05,接近于盲人,是谁偷走了他的视力?