javascript 面向对象编程 万物皆对象


Posted in Javascript onSeptember 17, 2009

javascript和java、C#等语言一样也具有面向对象的一些特征,但细比较的时候,会发现这些特征并不是真正的面向对象,很多地方都是利用对象本身来模拟面向对象,所以认为javascript不能算是面向对象编程语言,而是基于对象的语言。
在javascript中真的是万物皆对象,new出来的东西是对象,方法是对象,连类也都是对象。下面分别来看一下对象、方法和类的对象特征。
1.拿内置的Date来看一下吧

var time = new Date(); 
var timeString = time.getFullYear() + "-" + 
time.getMonth() + "-" + 
time.getDate() + " " + 
time.getHours() + ":" + 
time.getMinutes() + ":" + 
time.getSeconds(); 
document.write(timeString);

通过 time来操作其所引用的Date对象,可以方便的调用Date的对象所包含的一系列getXX()方法来获取年月日时分秒等信息。
可以再看一下String
var username = new String("hello world"); 
document.write(username.length);

变量username引用了new出来的字符串对象,通过username访问字符串对象的length属性。
2.方法也是对象
function hello() { 
alert("hello"); 
}; 
var helloRef = hello; 
helloRef();

hello是一个方法,helloRef是一个引用了hello方法的变量,helloRef和hello一样都指向了相同的方法对象。也就意味着helloRef也可以执行,helloRef()。同理也可以写出以下代码。
var helloRef = function() { 
alert("hello"); 
}; 
helloRef();

function(){alert(“hello”)}是一个匿名方法,当然也是对象,用helloRef变量引用该方法对象后,可以通过helloRef来调用方法。
3.那么类呢?当然类也是对象,在javascript中,不像C#或java那样有class关键字用来创建类,而是直接使用方法的关键字来创建类或者叫模拟类。
function Person(username, age) { 
this.Name = username; 
this.Age = age; 
this.Introduce = function() { 
alert("我叫" + this.Name + ",今年" + this.Age + "岁了。"); 
}; 
}; 
var person1 = new Person("张三", 20); 
person1.Introduce();

以上创建了一个Person类型,Person带有构造参数username和age,通过创建的Person对象可以调用Person所包含的方法Introduce。下面对代码做一些修改。
function Person(username, age) { 
this.Name = username; 
this.Age = age; 
this.Introduce = function() { 
alert("我叫" + this.Name + ",今年" + this.Age + "岁了。"); 
}; 
}; 
var PersonClass = Person; 
var person1 = new PersonClass("张三", 20); 
person1.Introduce();

重新声明新的变量PersonClass并引用Person类,PersonClass和Person都指向了原来的Person所引用的类,所以也可以用PersonClass来创建对象。
以上的几个例子可能不是很恰当,但也可以一窥javascript中万物皆对象。
下一节详细的谈一谈javascript中的对象。
Javascript 相关文章推荐
JS+CSS实现仿msn风格选项卡效果代码
Oct 22 Javascript
js判断手机号运营商的方法
Oct 23 Javascript
JS使用eval解析JSON的注意事项分析
Nov 14 Javascript
js正则表达式replace替换变量方法
May 21 Javascript
jQuery动态加载css文件实现方法
Jun 15 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
Oct 16 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
Jan 11 Javascript
jquery实现轮播图效果
Feb 13 Javascript
vue中render函数的使用详解
Oct 12 Javascript
微信小程序如何使用canvas二维码保存至手机相册
Jul 15 Javascript
JS实现关闭小广告特效
Jan 29 Javascript
JavaScript Blob对象原理及用法详解
Oct 14 Javascript
javascript 面向对象编程 function也是类
Sep 17 #Javascript
类似CSDN图片切换效果脚本
Sep 17 #Javascript
var与Javascript变量隐式声明
Sep 17 #Javascript
html数组字符串拼接的最快方法
Sep 16 #Javascript
在IE下获取object(ActiveX)的Param的代码
Sep 15 #Javascript
javascript 检测浏览器类型和版本的代码
Sep 15 #Javascript
不安全的常用的js写法
Sep 15 #Javascript
You might like
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
PHP实现用户认证及管理完全源码
2007/03/11 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
Js经典案例的实例代码
2018/05/10 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
Python代码解决RenderView窗口not found问题
2016/08/28 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
Python延时操作实现方法示例
2018/08/14 Python
logging level级别介绍
2020/02/21 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
人力资源专业推荐信
2013/11/29 职场文书
高中数学教学反思
2014/01/30 职场文书
自荐信的基本格式
2014/02/22 职场文书
个人收入证明模板
2014/09/18 职场文书
2014年居委会工作总结
2014/12/09 职场文书
大学辅导员述职报告
2015/01/10 职场文书
优秀教师个人总结
2015/02/11 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS