Javascript 面向对象 对象(Object)


Posted in Javascript onMay 13, 2010

javascript中的对象创建声明:
var obj = {}; 或者 var obj = new Object(); 
为对象加入属性,方法:
//=====第一种写法====================================
obj.name = '小明'; //为对象加属性
obj.updateName = function(name){//为对象定义updateName方法
this.name = name;
}
alert(obj.name);
obj.updateName("小强"); //调用updateName修改obj对象的name属性值
alert(obj['name']);
第一次显示结果为:小明
第二次显示结果为:小强
//=====第二种写法====================================
obj['name'] = '张三'; //为对象加属性
obj['updateName'] = function(name){//为对象定义updateName方法
obj['name'] =name;
}; 
alert(obj.name);
obj.updateName('李四'); //调用updateName修改obj对象的name属性值
alert(obj['name']);
第一次显示结果为:张三
第二次显示结果为:李四

//=====第三种写法==================================== 
var obj = { 
name: '王五', //为对象加属性 
updateName: function(name){//为对象定义updateName方法 
this.name = name;  
} 
}; 
alert(obj .name); 
obj.updateName("赵六"); //调用updateName修改obj对象的name属性值 
alert(obj .name);

第一次显示结果为:王五
第二次显示结果为:赵六
//=====分析=====================================
第一种写法是最普通的对象写法,因为javascript是动态语言,与Java和.Net不同,
在程序运行并创建对象后,还可以对该对象的内部结构进行修改,
比如添加属性和方法(java和.net中的反射机制做不到这点)。
(a): var obj = {} || new Object();
(b):obj.name = "张三";
(c):obj.updateName = function(name){ this.name = name};
当程序执行(a) 后,便创建了一个空对象(不包含任何方法和属性)obj,
当程序执行(b) 后,改变了obj的内部结构,加了一个属性name,
当程序执行(c) 后,改变了obj的内部结构,加了一个方法updateName ,
而这都是在运行的时候完成的动作
第二种写法像数组,但绝不是数组,区分是不是数组可以如此判断:
if(typeof(obj.length) == "undefined") { 
alert("obj不是数组,数组都有length属性!"); 
}else{ 
alert("obj是数组!"); 
}

第二种写法更像一种数据结构:map ,如:obj[key] = value;
key是字符串,value可以是任何类型,变量,对象,函数等。
可以通过这种方式遍历对象内部结构:
for(var key in obj) 
{ 
alert(key); 
var value = obj[key]; 
alert(value); 
}

通过alert可以显示出你所定义的内容。
第三种写法一看就是map的内部结构了,一个对象,内部完全用key : value键值对方式表示
JSON对象也是这种结构,只要对map或者JSON对象有所熟悉的就很容易理解了。
Javascript 相关文章推荐
form中限制文本字节数js代码
Jun 10 Javascript
JavaScript-世界上误解最深的语言分析
Aug 12 Javascript
javascript 面向对象继承
Nov 26 Javascript
js性能优化 如何更快速加载你的JavaScript页面
Mar 17 Javascript
js中继承的几种用法总结(apply,call,prototype)
Dec 26 Javascript
jQuery实现简单的间隔向上滚动效果
Mar 09 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
Jan 06 Javascript
JS平滑无缝滚动效果的实现代码
May 06 Javascript
Web 开发中Ajax的Session 超时处理方法
Jan 19 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
May 09 Javascript
layui表格数据重载
Jul 27 Javascript
返回上一个url并刷新界面的js代码
Sep 12 Javascript
Javascript 面向对象 命名空间
May 13 #Javascript
javascript 面向对象 function类
May 13 #Javascript
该如何加载google-analytics(或其他第三方)的JS
May 13 #Javascript
Javascript 面向对象 继承
May 13 #Javascript
Javascript 面向对象 重载
May 13 #Javascript
JavaScript 面向对象的 私有成员和公开成员
May 13 #Javascript
限制文本框输入N个字符的js代码
May 13 #Javascript
You might like
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
PHP7 弃用功能
2021/03/09 PHP
JS支持带x身份证号码验证函数
2008/08/10 Javascript
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
JS之相等操作符详解
2016/09/13 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
python实现矩阵打印
2019/03/02 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
2019/10/09 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
比利时家具购买网站:Home24
2019/01/03 全球购物
大学在校生求职信范文
2013/11/21 职场文书
勾股定理课后反思
2014/04/26 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
信用卡工资证明范本
2015/06/19 职场文书
田径运动会广播稿
2015/08/19 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书
导游词之山海关
2019/12/10 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL
Python进程池与进程锁之语法学习
2022/04/11 Python