Javascript 面向对象 对象(Object)_js面向对象

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对象有所熟悉的就很容易理解了。

时间: 2024-11-29 14:27:16

Javascript 面向对象 对象(Object)_js面向对象的相关文章

javascript复制对象使用说明_js面向对象

oldObj是一个对象,而不是值 例如var newObj=oldObj; 如果想oldObj改变的时候不影响到newObj: 可以这样写一个函数 复制代码 代码如下: function clone(myObj){ if(typeof(myObj) != 'object') return myObj; if(myObj == null) return myObj; var myNewObj = new Object(); for(var i in myObj) myNewObj[i] = clo

JavaScript面象对象设计_js面向对象

新一篇: JavaScript中字符串相等比较 面象对象的应用是相当广泛的,在桌面编程中很早就出现了,应用比较成熟,象C++,Java,C#等.而在Web编程这一块,出现就要晚得多,以致于现在的Web开发很困难,当然也有Web开发牵涉的技术多的原因.近年来,面向对象逐渐在Web开发中被引入.很多大型的网站是采用PHP开发的,PHP 4中面向对象的还不是很完善,在PHP 5中有所改进..Net也面向对象,但执行效率比不上PHP. JavaScript在Web开发中用得也是相当多的,常用的表单验证很

JavaScript之信息的封装 js对象入门_js面向对象

JavaScript之信息的封装 在编码前,我们需要了解如下几个术语:封装:对内部数据的表现形式和实施细节进行隐藏: 私有属性和方法:外界只能通过其公开的接口与其进行存取和交互 作用域:JavaScript中,只有函数具有作用域,函数内部定义的属性和方法在外部无法访问 特权方法:声明在函数内部,能访问函数内部变量(属性)的方法,比较耗费内存: 复制代码 代码如下: function Person() { /* * 声明私有的数据 * 昵称,年龄,邮箱 */ var nickName, age,

一个cssQuery对象 javascript脚本实现代码_js面向对象

复制代码 代码如下: /** * @author Supersha * @QQ:770104121 */ var cssQuery = { //parent:用于存储当前节点的父节点的引用 parent: document, select: function(selectorStr){ var selectors=selectorStr.split(" "); //分隔字符串 for (var i = 0, len = selectors.length; i < len; i++

JavaScript 面向对象之命名空间_js面向对象

在小项目中对于JavaScript使用,只要写几个function就行了.但在大型项目中,尤其是在开发追求良好的用户体验的网站中,如SNS,就会用到大量的JavaScrpt,有时JavaScript的工作量胜过了C#,这时写一堆function,就会显得很乱,杂乱无章,甚至会出现命名冲突,管理和维护起来都很麻烦.对于这种情况我们就需要使用面向对象的思想来开发JavaScript.那我们就这样作罢: 对于一个项目,首先要有个命名空间.所以我们首先要做的是定义一个函数来注册命名空间.代码如下: 复制

Javascript 面向对象编程(coolshell)_js面向对象

这两天有个前同事总在问我Javascript面向对象的东西,所以,索性写篇文章让他看去吧,这里这篇文章主要想从一个整体的角度来说明一下Javascript的面向对象的编程.(成文比较仓促,应该有不准确或是有误的地方,请大家批评指正) 另,这篇文章主要基于 ECMAScript 5, 旨在介绍新技术.关于兼容性的东西,请看最后一节. 初探 我们知道Javascript中的变量定义基本如下: 复制代码 代码如下: var name = 'Chen Hao';; var email = 'haoel(

javascript 设计模式之单体模式 面向对象学习基础_js面向对象

单体模式(singleton) 单体是在脚本加载时创建的,能将一系列有关联的变量和方法组织为一个逻辑单元,逻辑单元里面的内容通过单一的变量进行访问: 一个单体主要分为三部分 用于访问内部信息的入口变量(如:Sky) 属性(如:nickName/age/timeInfo) 方法(如:sayHello) 基本结构 复制代码 代码如下: var Sky = { /* * 作用一,变量管理 */ nickName: "sky", age: "26", /* * 作用二,加载

Javascript 面向对象之重载_js面向对象

上几节讲了 JavaScript 面向对象之命名空间 . javascript 面向对象的JavaScript类 与 JavaScript 面向对象的之私有成员和公开成员 ,大家可以先看上面的再继续往下看. 假如 我这样定义: 复制代码 代码如下: function getDate(){.....} function getDate(date){.....} 那么后一个方法将覆盖前一个,虽然不报错. 但是我们确实是可以实现重载的,如果你用过jQuery,你就会深有体会,比如$("#btn&quo

面向对象的javascript(笔记)_js面向对象

一.引用 复制代码 代码如下: //产生一个数组对象 var items = new Array('1','2','3'); //使一个引用指向该对象 var itemRef = items; items.push('4'); //items 与 itemRef指向同一对象 alert(items.length === itemRef.length); // 修改对象会产生一个新对象 var item = 'test'; var itemRef = item; item+='ing'; //此时