Js 对象 实例 以及构造函数的练习
2012-05-08 21:40
453 查看
myObj.js:
页面js:
/*function f1(){//Code} var f1=function(){//Code} var myFunction=new Function('f1','code')*/ //以上三种创建函数的方法相同 var myObj=new Object(); //ar myObj={}; //等于上行代码 实例化的myObj不能再通过new来建新的实例 myObj.name='sidihu';//对象实例myObj添加静态属性 myObj.age='26'; //对象实例myObj添加静态方法 myObj.showName=function(){ alert(this.name); } myObj.showAge=function(){ alert(this.age); } myObj.showSomething=function(){ alert('showSonething'); } //function var myFun1=function(message){ alert(message); this.message=message; } var myFun=function(){}; //myFun既是一个实例 也是一个构造函数 //直接用对象加点添加给对象的属性或者方法 本对象可以直接使用 但是myFun新的实例无法使用 // 但是使用了prototype添加公有的属性或者方法myFun无法使用 但是myFun的新实例能够使用 y因为向prototype中添加的成员会把新方法添加到myFun的底层定义中 而不是添加到myFun实例自身 //使用了prototype新建的方法中有不是用prototype创建的属性或者方法 myFun的新实例访问也会出错 例如myFun的新实例使用showAge() 因为showAge()中的age是不对外开放的 myFun.name='sidihu'; myFun.age='26'; myFun.showName=function(){ alert(this.name); } myFun.prototype.showAge=function(){ alert(this.age); } myFun.prototype.showSomething=function(){ alert('showSonething'); } //私有变量 var myPrivate=function(message){ this.message=message; //私有属性和私有方法是存在于构造函数作用域中的自包含的对象 新实例无法访问 //私有属性 var separate="-"; var myOwner=this; //私有方法 function alertMessage(){ alert("message is "+separate+myOwner.message); } //实例化时执行 //alertMessage(); //特权方法(也是公有方法) //getPrivate可以访问构造函数中的私有属性 并且 this.getPrivate=function(){ alert("getPrivate:message is "+separate+myOwner.message); } } //新实例可以使用 myPrivate.prototype.showMessage=function(){ alert(this.message); } myPrivate.prototype.showSeparate=function(){ alert(this.showSeparate); }
页面js:
<script language="javascript" src="js/MyObject.js" type="text/javascript" ></script> <script language="javascript" type="text/javascript" > window.onload=function(){ //myObj.name='ok'; //重新修改name属性 //myObj.showName();//直接使用myObj对象操作自己的属性和方法 //将myObj对象赋值给myObj2后使用myObj2 /*var myObj2= myObj; myObj2.showName=function(){ alert('i from myobj2 '+this.name);}//myObj2修改了myObj的showName方法 myObj2.showAge();//26 myObj.age='30'; alert(myObj2.age)//修改age属性的之后显示30 alert(myObj.age)//30 myObj2修改了myObj的age属性 myObj2.showName();//显示 i from myobj2 sidihu*/ //var fromMyFun1=new myFun1("i am fun1");//myFun1被实例化后 myFun1中方法会直接执行 而且此时myFun1中的this指向fromMyFun1, fromMyFun1有了meaage属性 //alert(fromMyFun1.message); /*//直接使用myFun myFun.showName(); //myFun.showAge();//报错 因为showAge是使用了prototype添加的方法 var fromFun=new myFun(); fromFun.showAge();//不报错 因为fromMyfun是myFun的新实例*/ var fromPrivate=new myPrivate('message'); fromPrivate.showMessage();//不报错 fromPrivate.getPrivate(); } </script>
相关文章推荐
- (104)反射:获取Class的对象、构造函数、字段、方法。反射实例练习
- JS面向对象-原型对象,实例对象,构造函数的关系
- js入门实例の构造函数\方法的定义和调用\原型对象
- js利用for in循环获取 一个对象的所有属性以及值的实例
- js入门实例の构造函数/方法的定义和调用/原型对象
- 关于js中,原型对象,原型链,构造函数,实例之间关系的理解与区别
- JS基础学习第六天:JavaScript对象入门(构造函数和实例对象)
- js入门实例の构造函数\方法的定义和调用\原型对象
- js中对象所属类、对象中原型属性以及构造函数三者的关系
- c++ string类的基本构造函数以及对象初始化实例
- 对JS克隆以及相关属性,数组,对象,函数的实例分析
- 前端进阶------实例对象,构造函数,以及原型之间的关系
- 作用域安全的构造函数以及js对象的创建步骤
- js入门实例の构造函数/方法的定义和调用/原型对象
- Javascript基于对象的特性以及构造函数
- JS获取当前对象大小以及屏幕分辨率等
- 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法
- JS中面向对象的,对象理解、构造函数、原型、原型链
- js练习之事件切换图片和控制css样式以及指定页面滚动位置
- javaScript中的prototype来龙去脉,原型、构造函数、实例对象