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 相关文章推荐
(JS实现)MapBar中坐标的加密和解密的脚本
May 16 Javascript
javascript利用初始化数据装配模版的实现代码
Nov 17 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
Aug 14 Javascript
JS连连看源码完美注释版(推荐)
Dec 09 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
Oct 26 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
Nov 02 Javascript
js中string和number类型互转换技巧(分享)
Nov 28 Javascript
Angular的事件和表单详解
Dec 26 Javascript
Vue-resource拦截器判断token失效跳转的实例
Oct 27 Javascript
Node.js搭建小程序后台服务
Jan 03 Javascript
深入理解Node module模块
Mar 26 Javascript
JavaScript中的this基本问题实例小结
Mar 09 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
农民和部队如何穿矿
2020/03/04 星际争霸
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
加载 Javascript 最佳实践
2011/10/30 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
js的三种继承方式详解
2017/01/21 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
英国手机零售商:Metrofone
2019/03/18 全球购物
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
Agoda中文官网:安可达(低价预订全球酒店)
2021/01/18 全球购物
不用游标的SQL语句有哪些
2012/09/07 面试题
火车来了教学反思
2014/02/11 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
针对吵架老公保证书
2015/05/08 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
给学校的建议书400字
2015/09/14 职场文书
高一作文之乐趣
2019/11/21 职场文书
Golang 实现WebSockets
2022/04/24 Golang