JS 面向对象的5钟写法


Posted in Javascript onJuly 31, 2009

Java代码

//第1种写法 
function Circle(r) { 
this.r = r; 
} 
Circle.PI = 3.14159; 
Circle.prototype.area = function() { 
return Circle.PI * this.r * this.r; 
} 
var c = new Circle(1.0); 
alert(c.area());

Java代码
//第2种写法 
var Circle = function() { 
var obj = new Object(); 
obj.PI = 3.14159; 
obj.area = function( r ) { 
return this.PI * r * r; 
} 
return obj; 
} 
var c = new Circle(); 
alert( c.area( 1.0 ) );

Java代码
//第3种写法 
var Circle = new Object(); 
Circle.PI = 3.14159; 
Circle.Area = function( r ) { 
return this.PI * r * r; 
} 
alert( Circle.Area( 1.0 ) );

Java代码
//第4种写法 
var Circle={ 
"PI":3.14159, 
"area":function(r){ 
return this.PI * r * r; 
} 
}; 
alert( Circle.area(1.0) );

Java代码
//第5种写法 
var Circle = new Function("this.PI = 3.14159;this.area = function( r ) {return r*r*this.PI;}"); 
alert( (new Circle()).area(1.0) );

大家来讨论一下这五种写法,它们的优缺点,哪个比较规范,特别是最后两种,经常见到。
Javascript 相关文章推荐
修改js Calendar日历控件 兼容IE9/谷歌/火狐
Jan 04 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
Apr 25 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
May 11 Javascript
javascript实现仿腾讯游戏选择
May 14 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
Oct 24 Javascript
js实现获取两个日期之间所有日期的方法
Jun 17 Javascript
如何使用Vuex+Vue.js构建单页应用
Oct 27 Javascript
js实现一个猜数字游戏
Mar 31 Javascript
vue实现todolist单页面应用
Apr 11 Javascript
详解Angular2中Input和Output用法及示例
May 21 Javascript
vue-cli安装使用流程步骤详解
Nov 08 Javascript
vue keep-alive 动态删除组件缓存的例子
Nov 04 Javascript
Document 对象的常用方法
Jul 31 #Javascript
javascript getElementsByName()的用法说明
Jul 31 #Javascript
extjs 列表框(multiselect)的动态添加列表项的方法
Jul 31 #Javascript
JavaScript 学习小结(适合新手参考)
Jul 30 #Javascript
JavaScript 创建对象和构造类实现代码
Jul 30 #Javascript
Javascript 学习笔记 错误处理
Jul 30 #Javascript
JS 学习笔记 防止发生命名冲突
Jul 30 #Javascript
You might like
Windows下的PHP安装pear教程
2014/10/24 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
浅谈PHP5.6 与 PHP7.0 区别
2019/10/09 PHP
JavaScript作用域链示例分享
2014/05/27 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
2016/01/14 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[57:55]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第二场 12.12
2020/12/16 DOTA
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
python实现简易版计算器
2020/06/22 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
Python正则表达式学习小例子
2020/03/03 Python
python requests.get带header
2020/05/05 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
求职简历中的自我评价分享
2013/12/08 职场文书
教学改革实施方案
2014/03/31 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
基层工作经历证明
2015/06/19 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫
Rust中的Struct使用示例详解
2022/08/14 Javascript