javascript动态添加、修改、删除对象的属性与方法详解


Posted in Javascript onJanuary 27, 2014

现在介绍如何为一个对象添加、修改或者删除属性和方法。在其他语言中,对象一旦生成,就不可更改了,要为一个对象添加修改成员必须要在对应的类中修改,并重新实例化,而且程序必须经过重新编译。JavaScript 中却非如此,它提供了灵活的机制来修改对象的行为,可以动态添加、修改、删除属性和方法。例如首先使用类Object来创建一个空对象user:
var user=new Object();

1.添加属性
这时user 对象没有任何属性和方法,显然没有任何用途。但可以为它动态的添加属性和方法,例如:
user.name=”jack”;
user.age=21;
user.sex=”male”;
通过上述语句,user 对象便具有了三个属性:name、age和sex。下面输出这三个语句:
alert(user.name);
alert(user.age);
alert(user.sex);
由代码运行效果可知,三个属性已经完全属于user 对象了。

2.添加方法
添加方法的过程和属性类似:
user.alert=function(){
alert(“my name is:”+this.name);
}
这就为user 对象添加了一个方法“alert”,通过执行它,可以弹出一个对话框显示自己的名字介绍:
user.alert();

3.修改属性
修改一个属性的过程就是用新的属性替换旧的属性,例如:
user.name=”tom”;
user.alert=function(){
alert(“hello,”+this.name);
}
这样就修改了user 对象name属性的值和alert方法,它从显示“my name is”变为了显示“hello”。

4.删除属性
删除一个属性的过程也很简单,就是将其置为undefined:
user.name=undefined;
user.alert=undefined;
这样就删除了name属性和alert方法。在之后的代码中,这些属性变的不可用。
在添加、修改或者删除属性时,和引用属性相同,也可以采用方括号([])语法:
user[“name”]=”tom”;
使用这种方式还有一个额外的特点,就是可以使用非标识符字符串作为属性名称,例如
标识符中不允许以数字开头或者出现空格,但在方括号([])语法中却可以使用:
user[“my name”]=”tom”;
需要注意,在使用这种非标识符作为名称的属性时,仍然要用方括号语法来引用:
alert(user[“my name”]);
而不能写为:
alert(user.my name);
利用对象的这种性质,甚至可以很容易实现一个简单的哈希表,在本书的后面将会看到其应用。此可见,JavaScript中的每个对象都是动态可变的,这给编程带来了很大的灵活性,也和其他语言产生了很大的区别,读者可以体会这种性质。

Javascript 相关文章推荐
JavaScript 计算图片加载数量的代码
Jan 01 Javascript
JavaScript动态添加列的方法
Mar 25 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
Jul 21 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
Sep 24 Javascript
js实现的简练高效拖拽功能示例
Dec 21 Javascript
详解.vue文件中监听input输入事件(oninput)
Sep 19 Javascript
详解微信小程序中的页面代码中的模板的封装
Oct 12 Javascript
理解Koa2中的async&await的用法
Feb 05 Javascript
axios 处理 302 状态码的解决方法
Apr 10 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
Sep 14 Javascript
详解Vue的组件中data选项为什么必须是函数
Aug 17 Javascript
jQuery+ajax实现文件上传功能
Dec 22 jQuery
javascript中定义私有方法说明(private method)
Jan 27 #Javascript
用javascript替换URL中的参数值示例代码
Jan 27 #Javascript
jquery选择器之基本过滤选择器详解
Jan 27 #Javascript
jquery选择器之层级过滤选择器详解
Jan 27 #Javascript
jquery选择器之内容过滤选择器详解
Jan 27 #Javascript
jquery选择器之属性过滤选择器详解
Jan 27 #Javascript
jQuery自定义事件的简单实现代码
Jan 27 #Javascript
You might like
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
php数组删除元素示例
2014/03/21 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
javascript 禁止复制网页
2009/06/11 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
python学习 流程控制语句详解
2016/06/01 Python
python设置随机种子实例讲解
2019/09/12 Python
Pygame的程序开始示例代码
2020/05/07 Python
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
财务部绩效考核方案
2014/05/04 职场文书
投标承诺书怎么写
2014/05/24 职场文书
农村门前三包责任书
2014/07/25 职场文书
开展创先争优活动总结
2014/08/28 职场文书
国庆庆典邀请函
2015/02/02 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python