当前位置: 首页 > news >正文

Prototype属性

函数:原型
每一个构造函数都有一个属性叫做原型(prototype,下面都不再翻译,使用其原文)。这个属性非常有用:为一个特定类声明通用的变量或者函数。
prototype的定义
你不需要显式地声明一个prototype属性,因为在每一个构造函数中都有它的存在。你可以看看下面的例子:
Example PT1
CODE:
function Test()
{
}
alert(Test.prototype); // 输出 "Object"
给prototype添加属性
就如你在上面所看到的,prototype是一个对象,因此,你能够给它添加属性。你添加给prototype的属性将会成为使用这个构造函数创建的对象的通用属性。
例如,我下面有一个数据类型Fish,我想让所有的鱼都有这些属性:livesIn="water"和price=20;为了实现这个,我可以给构造函数Fish的prototype添加那些属性。
Example PT2
CODE:
function Fish(name, color)
{
this.name=name;
this.color=color;
}
Fish.prototype.livesIn="water";
Fish.prototype.price=20;
接下来让我们作几条鱼:
CODE:
var fish1=new Fish("mackarel", "gray");
var fish2=new Fish("goldfish", "orange");
var fish3=new Fish("salmon", "white");
再来看看鱼都有哪些属性:
CODE:
for (var i=1; i<=3; i++)
{
var fish=eval_r("fish"+i);   // 我只是取得指向这条鱼的指针
alert(fish.name+","+fish.color+","+fish.livesIn+","+fish.price);
}
输出应该是:
CODE:
"mackarel, gray, water, 20"
"goldfish, orange, water, 20"
"salmon, white water, 20"
你看到所有的鱼都有属性livesIn和price,我们甚至都没有为每一条不同的鱼特别声明这些属性。这时因为当一个对象被创建时,这个构造函数 将会把它的属性prototype赋给新对象的内部属性__proto__。这个__proto__被这个对象用来查找它的属性。
你也可以通过prototype来给所有对象添加共用的函数。这有一个好处:你不需要每次在构造一个对象的时候创建并初始化这个函数。

转载于:https://www.cnblogs.com/wenchunlong/p/4484355.html

相关文章:

  • Modeless对话框如何响应快捷键
  • C# UDP(Socket)异步传输文件
  • leetcode 155 Min Stack
  • spring冲刺第二天
  • [转]太阳致敬式瑜伽
  • Linux环境Weblogic10g服务部署
  • ExecutorService生命周期(转)
  • Solr使用入门指南
  • 关于统计信息过期的性能落差
  • 线段树(单点更新)/树状数组 HDOJ 1166 敌兵布阵
  • git fetch和git pull之间的区别--转载
  • centos 零碎学习小记 9.
  • Android中的windowSoftInputMode属性详解
  • 手机看:用例图
  • nginx实现负载均衡
  • 【comparator, comparable】小总结
  • Android开源项目规范总结
  • Android框架之Volley
  • CODING 缺陷管理功能正式开始公测
  • JS学习笔记——闭包
  • mysql 数据库四种事务隔离级别
  • MySQL主从复制读写分离及奇怪的问题
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Python3爬取英雄联盟英雄皮肤大图
  • Ruby 2.x 源代码分析:扩展 概述
  • SpiderData 2019年2月13日 DApp数据排行榜
  • vuex 学习笔记 01
  • XForms - 更强大的Form
  • 爱情 北京女病人
  • 代理模式
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 简单基于spring的redis配置(单机和集群模式)
  • 想写好前端,先练好内功
  • ​iOS实时查看App运行日志
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (3)选择元素——(17)练习(Exercises)
  • (39)STM32——FLASH闪存
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Forward) Music Player: From UI Proposal to Code
  • (二)Linux——Linux常用指令
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (九)c52学习之旅-定时器
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • ./和../以及/和~之间的区别
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET CLR基本术语
  • .NET Remoting学习笔记(三)信道
  • .net 发送邮件
  • .netcore如何运行环境安装到Linux服务器
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @angular/cli项目构建--http(2)
  • @Import注解详解
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证