js对象定义
2011-10-29 00:18
134 查看
js对象的定义有以下几种方法:
1.工厂方式
2.构造函数方式
3.原型方式
分别介绍下
1.工厂方式
使用
问题:
其中的ShowMyInfo函数会在每次new时都从新创建,浪费!
办法:
2.构造函数方式
3.原型方式
优点:
对象共享,不浪费!
问题:
1.没有参数
2.对象共享
试下如下代码便知道why
-------------------------------------------------
比较完美的方案:
构造函数+原型方式
自己看没排版。
1.工厂方式
2.构造函数方式
3.原型方式
分别介绍下
1.工厂方式
1 function CreateMyObj(key, value) { 2 var myObj = new Object; 3 myObj.key = key; //"I'm is a Key"; 4 myObj.value = value; //"I'm is a Value"; 5 myObj.ShowMyInfo = function () { 6 alert("myInfo is key:" + this.key + ";value:" + this.value); 7 } 8 9 return myObj; 10 }
使用
var newMyObj1 = CreateMyObj("key1", "value1"); var newMyObj2 = CreateMyObj("key2", "value2"); newMyObj1.ShowMyInfo(); newMyObj2.ShowMyInfo();
问题:
其中的ShowMyInfo函数会在每次new时都从新创建,浪费!
办法:
function ShowMyObjInfo() { alert("myInfo is key:" + this.key + ";value:" + this.value); } function CreateMyObj(key, value) { var myObj = new Object; myObj.key = key; //"I'm is a Key"; myObj.value = value; //"I'm is a Value"; myObj.ShowMyInfo = ShowMyObjInfo; return myObj; }
2.构造函数方式
function ShowMyObjInfo() { alert("myInfo is key:" + this.key + ";value:" + this.value); } function MyObj(key, value) { this.key = key; //"I'm is a Key"; this.value = value; //"I'm is a Value"; this.ShowMyInfo = ShowMyObjInfo; } var newMyObj1 = new MyObj("key1", "value1"); var newMyObj2 = new MyObj("key2", "value2"); newMyObj1.ShowMyInfo(); newMyObj2.ShowMyInfo();
3.原型方式
function MyObj() { } MyObj.prototype.key = "I'm is a Key"; MyObj.prototype.value = "I'm is a Value"; MyObj.prototype.myChildren = ["child1","child2"]; MyObj.prototype.ShowMyInfo = function () { alert("myInfo is key:" + this.key + ";value:" + this.value+";myChildren:"+this.myChildren.join(",")); }
优点:
对象共享,不浪费!
问题:
1.没有参数
2.对象共享
试下如下代码便知道why
var newMyObj1 = new MyObj(); var newMyObj2 = new MyObj(); newMyObj1.myChildren.push("child3"); newMyObj1.ShowMyInfo(); newMyObj2.ShowMyInfo();
-------------------------------------------------
比较完美的方案:
构造函数+原型方式
function MyObj(key, value) { this.key = key; //"I'm is a Key"; this.value = value; //"I'm is a Value"; this.myChildren = ["child1", "child2"]; } MyObj.prototype.ShowMyInfo = function () { alert("myInfo is key:" + this.key + ";value:" + this.value + ";myChildren:" + this.myChildren.join(",")); }; var newMyObj1 = new MyObj("key1","value1"); var newMyObj2 = new MyObj("key2","value2"); newMyObj1.myChildren.push("child3"); newMyObj1.ShowMyInfo(); newMyObj2.ShowMyInfo();
自己看没排版。
相关文章推荐
- js 多种变量定义(对象直接量,数组直接量和函数直接量)
- js高级程序设计书中,有一句话在全局作用域中定义的函数实际上只 能被某个对象调用???
- js中定义对象的几种方式
- 对js对象定义几种方式的理解
- 002_JavaScript对象定义方式剖析——北京圣思园JavaScript&jsUnit&Ajax&jQuery
- js对象定义,表格数据转成json上传提交
- Javascript中定义方法的另类写法(批量定义js对象的方法)
- 003_JavaScript深度剖析之对象定义详解——北京圣思园JavaScript&jsUnit&Ajax&jQuery
- 页面引入JS文件IE6报错 XX函数未定义 对象为空
- js定义对象并赋值
- js定义对象简单学习例子
- JavaScript学习12 JS中定义对象的几种方式
- js的基本对象的定义
- (六)javascriptJS中定义对象的几种方式(转)
- js 动态创建一个变量,以字符串形式定义变量,定义对象
- ASP.NET中母版页引用外部js或css文件无效,提示对象未定义解决方法
- JS高级 - 面向对象2(prototype定义)
- js如何定义类或对象
- JS中的JSON对象 定义和取值(包括动态创建JSON对象)
- js遍历定义之----对象与类的区别