JavaScript 基于原型的对象(创建、调用)


Posted in Javascript onOctober 16, 2009

JavaScript中的对象有三种
1,内部对象
如Array,Boolean,Data,Math,Number,Object,RegExp,String对象等
这些对象系统给我们提供了各自的属性与方法供调用。
2,基于类的对象
用类的方式实现对象的引用,这些类需要我们自己定义
3,基于原型的对象
提供有关如何使用 JavaScript 基于原型的对象模型的指南,并且提供指向特定信息的链接,这些信息描述基于原型的对象的自定义构造函数和继承。

在我们写js代码的时候,内部对象是不可避免的要引用,但是光靠这些对象是不够的,所以需要我们自己定义对象,这个时候通常用到的对象是第三种,即基于原型的对象,下面就如何创建自己的对象,定义对象的方法、属性,调用对象给出详细的说明。

//JScript 的一个强大功能是能够定义构造函数,以创建自定义的基于原型的对象,以便在您的脚本中使用。 
//要创建基于原型的对象的实例,首先必须定义一个构造函数。 
//此过程将创建一个新对象并将它初始化(创建属性并赋初始值)。 
//当完成后,构造函数将返回对所构造对象的引用。 
//在构造函数内部,创建的对象是通过 this 语句引用的。 
function people(name,age)//定义people对象 
{ 
this.mName=name;//这里的mName表示属性,无需在外面定义,this指示的是people这个对象 
this.Age=age; 
this.category="哺乳动物"; 
this.toString=Exporting;//方法,注意这里只能写toString,而不是toString() 
this.myMethod=function()//等价于this.myMethod=method;然后下面写method的方法 
{ 
return "你好"; 
} 
} 
function Exporting()//可以有返回值,但函数名前不用写返回值的类型,如string,int之类 
{ 
return "我的名字是——"+this.mName+",年龄是——"+this.Age; 
} 
/*function method() 
{ 
return "你好"; 
}*/ 
people.prototype.getName=function()//在构造函数外面写方法, 
//也也可以这样写function people.prototype.getName() 
//等价于在构造函数里面的方法:this.getName 
{ 
return this.mName; 
} 
people.prototype.getAge=this.Age;//在构造函数外面写属性, 
//等价于在构造函数里面的方法:this.getAge 
function people.prototype.getMoney()//同people.prototype.getMoney=function()等价 
//也等价于在构造函数里的写法:this.getMoney 
{ 
return "1000"; 
} 
function show()//调用people对象 
{ 
var me=new people("刘德华",22);//实例化people对象,关键字new 
//var myName=me.getName(); 
//alert(myName); 
me.sex="男";//这里的sex属性只能用于me这个实例,即特有属性 
//而如果有定义var you =new people("小强",1); 
//you这个实例却不能调用sex属性 
//如果要这两个实例都可以引用的话应该把sex属性写作people.prototype.sex 
//alert(me.sex); 
//alert(me.category); 
//alert(me.toString());//或者直接写alert(me)即可 
//alert(me.myMethod()); 
//alert(me.getMoney()); 
alert(me.myMethod()+"\n姓名:"+me.getName()+"\n性别:"+me.sex+"\n类别:"+me.category+"\n总资产:"+me.getMoney()+"\n总结:"+me.toString()); 
}

根据上面的思路,可以在JavaScript内置对象上添加其它属性或者方法,下面为String对象增加一
good方法和bad属性,这是内置对象中所没有的方法和属性
String.prototype.good=function()//自定义方法 
{ 
return "恭喜你成功对内置String对象追加good方法"; 
} 
String.prototype.bad="恭喜你成功对内置String对象追加bad属性";//自定义属性 
function test()//调用String对象追加的属性和方法 
{ 
var str="good good study";//定义一个字符串实例str 
alert(str.good()+"\n"+str.bad);//调用自定义的string对象的方法good和属性bad 
}

最后在html中添加两个button按钮,测试对象people和string对象追加的方法和属性
<html> 
<title>JavaScript基于原型的对象</title> 
<body> 
<div> 
<input type="button" value="自定义对象定义" onclick="show()"> 
</div> 
<div> 
<input type="button" value="内置对象追加方法" onclick="test()"> 
</div> 
</body> 
</html>

测试结果通过。。。。。。。表明对象的创建、对象方法属性的调用、内部对象的追加方法和属性调用都是正确的。
Javascript 相关文章推荐
javascript 实现字符串反转的三种方法
Nov 23 Javascript
深入讲解AngularJS中的自定义指令的使用
Jun 18 Javascript
js实现匹配时换色的输入提示特效代码
Aug 17 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
Oct 25 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
Nov 17 Javascript
jquery实现鼠标悬浮停止轮播特效
Aug 20 Javascript
第一次接触神奇的Bootstrap网格系统
Jul 27 Javascript
vue2实现数据请求显示loading图
Nov 28 Javascript
微信小程序显示下拉列表功能【附源码下载】
Dec 12 Javascript
详解webpack-dev-server使用方法
Sep 14 Javascript
如何实现一个webpack模块解析器
Oct 24 Javascript
Javascript实现秒表倒计时功能
Nov 17 Javascript
JavaScript 定义function的三种方式小结
Oct 16 #Javascript
JavaScript 函数式编程的原理
Oct 16 #Javascript
实现JavaScript中继承的三种方式
Oct 16 #Javascript
显示js对象所有属性和方法的函数
Oct 16 #Javascript
半角全角相互转换的js函数
Oct 16 #Javascript
JavaScript 三种创建对象的方法
Oct 16 #Javascript
JQuery困惑—包装集 DOM节点
Oct 16 #Javascript
You might like
基于PHP遍历数组的方法汇总分析
2013/06/08 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访-EG篇
2018/04/03 DOTA
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
使用python turtle画高达
2020/01/19 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
大专自我鉴定范文
2013/10/23 职场文书
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
安全教育演讲稿
2014/05/09 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
煤矿安全生产标语
2014/06/06 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
2014年工作总结及2015工作计划
2014/12/12 职场文书
给客户的检讨书
2014/12/21 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
canvas绘制折线路径动画实现
2021/05/12 Javascript