除了可以在类的构造器方法中定义方法和属性外,也可以使用 prototype 定义方法和属性。每个类都有这个属性,该属性是一个静态属性,因此无需实例化,只需使用类引用该属性即可。

1.1 使用 prototype 定义方法:

function Person(myName,myAge){

this.nickName = myName;

this.age = myAge;

}

Person.prototype.showInfo = function(){

return("hi"+this.nickName+"我现在"+this.age+"岁了。");

};

1.2 使用 prototype 定义属性:

function showHistory(){

return "10年开发体验";

}

Person. prototype.showHistory = showHistory;

var person_1 = new Person("xiaowu","28");

alert(person_1.showHistory()) //弹出10年开发体验

1.3 关于 prototype 和 _proto_ 属性

每个构造器都有一个 prototype 属性,该属性在定义构造器方法时自动创建的。 prototype 属性代表用该函数创建的类的默认属性值。

如果将方法分配给类的 prototype 属性,则该类的任何新创的实例都可以使用这些方法。

类的每个新实例也都有一个 _proto_ 属性,用于引用创建它的构造器方法的 prototype 属性。

可以使用 prototype 和 _proto_ 属性扩展类,这样可以以面向对象的方式重新使用代码。

person_1._proto_.showHistory = showHistory;

tip:最好将方法分配给构造器方法的 prototype 属性,因为它只存在于一个位置,并且由该类的新实例引用。_proto_ 属性最终还是要经过对 prototype 属性的引用才能实现其功能。

并且,IE不支持 _proto_ 属性。所以不建议使用。

最新文章

  1. Spring in Action 学习笔记二-DI
  2. position:fixed失效
  3. CabArc to create or extract a cab file
  4. 密码学初级教程(八)SSL/TLS-为了更安全的通信
  5. 无良教程-破解SublimeText3
  6. JqGrid使用经验
  7. 分析java堆
  8. Android -- AsyncTask源码解析
  9. 浅析php过滤html字符串,防止SQL注入的方法
  10. python3全栈开发-什么是粘包、粘包现象、如何解决粘包
  11. Android初级教程XUtils实现“断点续传”下载
  12. (十三)UITableView数据模型化
  13. golang中Context的使用场景
  14. Springboot 系列(十一)使用 Mybatis(自动生成插件) 访问数据库
  15. System.IO.Pipelines: .NET上高性能IO
  16. SpringBoot 集成数据库连接池Druid
  17. HttpConnection
  18. npmrc npm配置文件
  19. indexOf() 使用方法(数组去重)
  20. css 横向滚动条webkit-scrollbar

热门文章

  1. CodeForces - 862C Mahmoud and Ehab and the xor(构造)
  2. yii2.0 引入权限控制插件
  3. 《新标准C++程序设计》4.6(C++学习笔记16)
  4. JS - if(flag) if(!flag)
  5. Percona-Toolkit 之 pt-archiver 删除历史数据
  6. 74.Python中ORM聚合函数详解:Max,Min
  7. 032-session函数
  8. 通过html5 touch事件封装手势识别组件
  9. webapi------宿主程序
  10. C#编码习惯2