JavaScript的prototype是什么?
一、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是什么?相关推荐
- JavaScript 笔记 ( Prototype )
这阵子实在好忙 ( 这样说好像也不是一两个月了... ),然后因为工作伙伴都是 JavaScript 神之等级的工程师,从中也学到不少知识,毕竟就是要和强者工作才会成长呀!为了想好好瞭解他们写的程式码 ...
- JavaScript原型Prototype详情
文章来源: 学习通http://www.bdgxy.com/ 目录 1.概述 1.1原型是什么 1.2获取原型 2.原型属性 2.1利用原型添加属性与方法. 2.2访问原型属性原型方法 3.自有属性与 ...
- Javascript的prototype
JavaScript是基于对象的,任何元素都可以看成对象.然而,类型和对象是不同的.本文中,我们除了讨论类型和对象的一些特点之外,更重要的是研究如何写出好的并且利于重用的类型.毕竟,JavaScrip ...
- JavaScript:Object.prototype.toString进行数据类型判定
在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Obje ...
- JavaScript 面向对象 (prototype 原型模式)
一. JavaScript 设计思想 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版.这是历史上第一个比较成熟的网络浏览器,轰动一时.但是,这个版本的浏览器只能用来浏览 ...
- JavaScript的Prototype实现
作者:Jeff.Yan(阎宏),BlueSwing.Liu(刘如鸿) 模式: Prototype(原始模型模式或者原型模式) 定义: 通过给出一个原型对象来指明所要 ...
- JavaScript:Object.prototype.toString方法的原理
在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Obje ...
- JavaScript:prototype属性使用说明
prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,而且特殊的地方便在于:它是一个给类的对象添加方法的方法!这一点可能听起来会有点乱,别急,下面我便通过实例对这一特殊的 ...
- javascript之prototype原型属性案例
练习: 给字符串对象添加一个toCharArray的方法,然后再添加一个reverse(翻转)的 方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...
- 我所知的javascript之prototype
一:prototype大概概念和用途 "prototype"字面翻译是"原型",是javascript实现继承的主要手段.粗略来说就是:prototype是ja ...
最新文章
- Spring Cloud Hystrix理解与实践(一):搭建简单监控集群
- Vue实现仿音乐播放器项目总述以及阶段目录
- 【Linux】Linux下建立和管理逻辑卷
- Angular里ngClass的一个使用例子
- ASP.NET Core MVC 源码学习:MVC 启动流程详解
- vector 修改 java_java对vector动态数组中的对象排序,以下代码有何问题,如何修改?...
- 不用数组,解决众数问题(前提 :众数出现的次数必须大于n/2)
- 百度大脑公开课:快速定制、部署高精度深度学习模型!
- 蜜雪冰城“骗局”:年赚8亿,竟不是靠卖奶茶?!
- 基于深度学习模型的麻蕉疾病自动识别(增加形态计量和几何分析)
- 千亿级数量下日志分析系统的技术架构选型
- WEB SERVER调优
- java access_Java 连接Access数据库的两种方式
- 微信公众号自动回复消息跳转小程序
- 如何使用Git上传本地项目到github?(mac版)
- RL(四)动态规划解决强化学习
- python与cad交互_python 使用pyautocad操作AutoCAD
- 逐行扫描(Progressive scanning),隔行扫描(interlace scanning),场
- VC Debug与Release区别
- 做百度快照入门_如何为您的博客文章拍摄屏幕快照(入门指南)
热门文章
- Jeffery C. Hill
- scrapy框架常用从头到尾巴
- 应用实例之__get()魔术方法--ShuipFCMS的组件(Components)调用原理
- 计算机个人市场调查实验报告,市场调查实验报告(一).doc
- centos7克隆机修改ip地址,并与另一台虚拟机ping起来
- Codeforces Round #736 (Div. 2)
- 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
- 放大电路静态工作点的稳定
- c语言put()用法,C++ get()和put()读写文件详解
- 在IE中为abbr标签加样式(转)