Javascript对象定义方式的比较
来源:互联网 发布:大数据和java的关系 编辑:程序博客网 时间:2024/05/22 03:43
1. 字面量形式
var obj1 = { name: "obj1", fuc: function () { alert("OK"); }};
优点:字面量形式与json对象类似,简单直观。
缺点:(1)代码不具备重用性,如果要创建一个具有相同成员的对象obj2,则需要将上述定义代码全部copy给obj2。(2)仅使用字面量方式,不能动态添加对象成员。
2.创建object实例
var obj2 = new Object();obj2.name = "obj2",obj2.fuc = function () { alert("OK");};
优点:可以动态的为对象添加成员。
缺点:代码仍不具备重用性,即fuc函数仍仅为对象obj2所持有。
3.构造函数定义
function Obj3() { this.name = "obj3", this.fuc = function () { alert("OK"); };}
优点:对象成员name和fuc为类型Obj3的所有实例所共有,即每个定义的Obj3实例都至少包含name和fuc两个成员。
缺点:每定义一个对象实例,都会开辟一段空间用于保存成员name和fuc,而函数一般为所有实例所共享,只需要开辟一个空间即可,故构造函数方式造成了额外的内存开销。
4.原型方式
function Obj4() {}Obj4.prototype.name = "obj4",Obj4.prototype.fuc = function () { alert("OK");};
优点:所有对象实例共享一段内存空间,节省了空间开销,达到了Java中静态成员变量的效果。
缺点:对普通成员变量,即非函数的成员不建议使用,因为普通成员变量一般记录对应实例的特性,对原型中成员变量的更改会反映到每个实例中,因为每个实例都从同一块内存区中读取成员变量值。
错误的定义方式
Obj4.fuc = function () { alert("OK");};
特别提醒:有Java或C#开发经历的朋友可能会误用此方式,这其实是不符合js语法的,如果调用fuc方法,会返回undefined错误,请牢记!
推荐的方式
function Obj4() { this.name = "obj3";}Obj4.prototype.fuc = function () { alert("OK");};
朋友们在JS开发中,建议将普通成员变量定义在构造函数中,这样每个实例都会有自己的一个成员变量存储空间,保存特有的状态;在对象原型中定义成员函数,从而所有实例共享只占用一个内存区的函数。
笔者在武汉读研,第一次写博客呢,有表达不好的地方请前辈们多多批评指正,感谢支持!!!
阅读全文
1 0
- Javascript对象定义方式的比较
- javascript定义对象的方式
- JAVASCRIPT定义对象的四种方式
- javascript的数组和对象定义方式
- JAVASCRIPT定义对象的四种方式
- javaScript动态原型的方式定义对象
- Javascript对象定义的几种方式
- javaScript中定义类或对象的五种方式
- javaScript中定义类或对象的五种方式
- javascript定义类或对象的四种方式
- JavaScript中定义对象的四种方式
- Javascript笔记-定义对象的几种方式
- javascript定义类或对象的几种方式
- javascript 中定义类和对象的几种方式
- javaScript中定义类或对象的五种方式
- JavaScript JS中定义对象的几种方式
- javaScript中自定义对象(类的定义方式)
- JavaScript中定义对象的几种方式
- 智能设计(智能家居的研发实战实操)专项技能培训通知
- 数据结构基础温故-7.排序
- table表格js简单操作隐藏与显示出现结构错乱解决方法
- linux中防火墙iptables的操作
- okHttp之请求Call
- Javascript对象定义方式的比较
- JS中输入的整数倒叙输出
- 手动启动Spring容器
- 基于 Python 和 Scikit-Learn 的机器学习介绍
- Maven项目pom.xml文件详解
- QT总结之信号与槽
- 初学Redis(4)——简单实现Redis缓存中的排序功能
- 雇佣问题
- 点击图片弹出页面效果常用代码