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 相关文章推荐
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
Feb 26 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
May 19 Javascript
JavaScript中神奇的call()方法
Mar 12 Javascript
JavaScript实现将文本框的值插入指定位置的方法
Aug 13 Javascript
简单讲解jQuery中的子元素过滤选择器
Apr 18 Javascript
浅谈JavaScript的全局变量与局部变量
Jun 10 Javascript
提高JavaScript执行效率的23个实用技巧
Mar 01 Javascript
vue监听滚动事件实现滚动监听
Apr 11 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
Jul 24 Javascript
JS二级菜单不同实现方法分析【4种方法】
Dec 21 Javascript
微信小程序实现判断是分享到群还是个人功能示例
May 03 Javascript
JS内置对象和Math对象知识点详解
Apr 03 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
晶体管单管来复再生式收音机
2021/03/02 无线电
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
PHP编程与应用
2006/10/09 PHP
php读取xml实例代码
2010/01/28 PHP
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
基于PHP编程注意事项的小结
2013/04/27 PHP
经典的带阴影的可拖动的浮动层
2006/06/26 Javascript
jquery异步调用页面后台方法&amp;#8207;(asp.net)
2011/03/01 Javascript
实现动画效果核心方式的js代码
2013/09/27 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
jquery禁用右键示例
2014/04/28 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
React key值的作用和使用详解
2018/08/23 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
Python简单实现Base64编码和解码的方法
2017/04/29 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
生物科学专业个人求职信范文
2013/12/07 职场文书
班队活动设计方案
2014/01/30 职场文书
报关员个人职业生涯规划书
2014/03/12 职场文书
消防安全责任书
2014/04/14 职场文书
事业单位考核材料
2014/05/21 职场文书
合同意向书范本
2014/07/30 职场文书
绿色小区申报材料
2014/08/22 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
课外活动实习计划
2015/01/19 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
个人自荐书怎么写
2015/03/26 职场文书
刑事上诉状范文
2015/05/22 职场文书
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python