一、prototype 是什么?

prototype 是每个函数(不包括箭头函数)都默认具有的属性,默认值为:指向函数本身的 constructor 对象。


1、查看 prototype
// 缺省值为:Rabbit.prototype = { constructor: Rabbit }
function Rabbit() { }
alert(Rabbit.prototype.constructor == Rabbit)// rabbit继承了constructor
let rabbit = new Rabbit();// 输出结果:true
alert(rabbit.constructor == Rabbit);

2、错误修改 prototype

prototype 不正确的修改,会导致 constructor 的改变。

function Rabbit() { }// 1、错误:这会覆盖整个 Rabbit.prototype,
// Rabbit.prototype.constructor不能正确指向Rabbit
Rabbit.prototype = {jumps: true
};
// 输出:false
alert(Rabbit.prototype.constructor === Rabbit);

3、正确修改 prototype

为了保持constructor的正确性,不要覆盖prototype,而是用添加和删除操作

function Rabbit() { }// 1、正确:采用添加操作
// Rabbit.prototype.constructor==Rabbit没有被破坏
Rabbit.prototype.jumps = true
// 输出:true
alert(Rabbit.prototype.constructor === Rabbit);// 2、正确:采用手动添加操作,等同于上面
Rabbit.prototype = {jumps: true,constructor: Rabbit
};
alert(Rabbit.prototype.constructor === Rabbit);

4、用 constructor 创建对象
function Rabbit(name) {this.name = name;alert(name);
}let rabbit = new Rabbit("White Rabbit");// constructor默认指向函数本身,上面和下面都是调用函数Rabbit创建对象
let rabbit2 = new rabbit.constructor("Black Rabbit");

二、参考链接
  • JavaScript的prototype是什么?

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. Spring Cloud Hystrix理解与实践(一):搭建简单监控集群
  2. Vue实现仿音乐播放器项目总述以及阶段目录
  3. 【Linux】Linux下建立和管理逻辑卷
  4. Angular里ngClass的一个使用例子
  5. ASP.NET Core MVC 源码学习:MVC 启动流程详解
  6. vector 修改 java_java对vector动态数组中的对象排序,以下代码有何问题,如何修改?...
  7. 不用数组,解决众数问题(前提 :众数出现的次数必须大于n/2)
  8. 百度大脑公开课:快速定制、部署高精度深度学习模型!
  9. 蜜雪冰城“骗局”:年赚8亿,竟不是靠卖奶茶?!
  10. 基于深度学习模型的麻蕉疾病自动识别(增加形态计量和几何分析)
  11. 千亿级数量下日志分析系统的技术架构选型
  12. WEB SERVER调优
  13. java access_Java 连接Access数据库的两种方式
  14. 微信公众号自动回复消息跳转小程序
  15. 如何使用Git上传本地项目到github?(mac版)
  16. RL(四)动态规划解决强化学习
  17. python与cad交互_python 使用pyautocad操作AutoCAD
  18. 逐行扫描(Progressive scanning),隔行扫描(interlace scanning),场
  19. VC Debug与Release区别
  20. 做百度快照入门_如何为您的博客文章拍摄屏幕快照(入门指南)

热门文章

  1. Jeffery C. Hill
  2. scrapy框架常用从头到尾巴
  3. 应用实例之__get()魔术方法--ShuipFCMS的组件(Components)调用原理
  4. 计算机个人市场调查实验报告,市场调查实验报告(一).doc
  5. centos7克隆机修改ip地址,并与另一台虚拟机ping起来
  6. Codeforces Round #736 (Div. 2)
  7. 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
  8. 放大电路静态工作点的稳定
  9. c语言put()用法,C++ get()和put()读写文件详解
  10. 在IE中为abbr标签加样式(转)