js学习(四)- prototype原型对象
前言:
下面两行代码都是创建一个数组对象myArray:
var myArray=[];
//等价于
var myArray=new Array();
同样,下面的两段代码也都是创建一个函数myFunction:
function myFunction(a,b){
return a+b;
}
//等价于
var myFunction=new Function("a","b","return a+b");
所以创建一个函数的方法相当于new了一个Function,而prototype 是Function的方法体。
prototype 对象是实现面向对象的一个重要机制。每个函数(function)其实也是一个对象,它们对应的类是“Function”,但它们身份特殊,每个函数对象都具有一个子对象prototype。即prototype表示了该函数的原型,而函数也是类,prototype就是表示了一个类的成员的集合。当通过 new来获取一个类的对象时,prototype对象的成员都会成为实例化对象的成员。
既然prototype是一个对象,可以使用前面两节介绍的方法对其进行动态的修改,这里先给出一个简单的例子:
//-------------------------------js代码-----------------
function User(){
//类成员的定义及构造函数
}
//-------------------------------html页面代码-------------------------------
<script type="text/javascript" src="demo01.js"></script>
<script type="text/javascript">
//-----------------知识点一-----------------
User.prototype.name ='tom';//创建User类的同时便相当于创建了一Function类的实例,
此处之所以可以调用prototype子对象是因为:User类的创建实质上是:var myFunction=new Function("a","b","return a+b");
,而prototype是函数Function的子对象。
User.prototype.say = function (){
console.log("hello - ")
}
var user = new User();
console.log(user['say']());
</script>
最新文章
- Unable to the boot Simulator ! Mac开机现“CoreTelephony Trace File Error”,
- Java关键字native、volatile、transient
- Spring声明式事务配置与使用
- 转:浅析基于微软SQL Server 2012 Parallel Data Warehouse的大数据解决方案
- CentOS用gparted实现无损调整磁盘分区大小
- spring bean之间的关系:继承;依赖
- jQuery插件-jgcharts实现Javascript制作Google Charts
- 在家用机上搭建 Git https 服务器
- CentOS,Ubuntu,Gentoo,Freebsd,RedHat,Debian的区别及选择
- vim列编辑
- Modelbuilder快速入门
- Nginx安装与代理
- [MySQL] mysql的事务隔离和幻读和死锁问题
- REST风格架构
- plugin-barcodescanner 报错
- 八皇后问题的Python实现和C#实现
- 01:jQuery的下拉选select2插件用法
- 问题 B: 【例9.3】求最长不下降序列(基础dp)
- Hibernate一对多关联关系保存时的探究
- ElasticSearch搜索实例含高亮显示及搜索的特殊字符过滤