• javascript面向对象定义对象(1)


      javascript本身不是完全面向对象的哦。。另外,它是一种动态语言,所谓动态,一开始我以为解释执行的就是动态,后来才知道不是。。。像java和C#,他们的属性和方法,一旦定义了,就不能够改变了,而动态语言,可以动态地增加、删除对象的属性和方法。。够牛哦

    定义javascript的对象其实有三种方法:

    (1)使用Object对象。

     Object是js内置的。比如代码1:

    代码1:

    1     var  widget= new Object();  //声明一个对象;
    2 widget.width = "300px"; //width属性
    3 //等等,width哪里来的?js是动态语言,width属性是动态加到obj上的,不像C#,java一样,必须先声明类的属性哦。。
    4 widget.show = function(){
    5 alert(this.width);
    6 }
    7 widget.show();

        既然javascript可以动态增减属性,那怎么删除属性呢?接代码1:

       widget.width = undefined  或者delete widget.width;  

       然后:alert(widget.width);
       会弹出:undefined;

    (3)  JSON样式的对象,比如代码2:

     代码2:

    1 var widget = {
    2 "width":"300px",
    3 "show":function(){
    4 alert(widget["width"]);
    5 }
    6 };
    7 widget.show();

     在代码2里,初学的可能会以为var widget={} 是一个类的定义,那么使用这个类,为什么不去new一个对象呢?

    实际上  var widget={} 本身是一个对象,直接用。。。

    其中的属性”width","show" 的双引号,可要可不要;

    另外调用属性,我们可以看到两种方式,第一种是用点号加属性名,如  widget.show(); 第二种则是中括号的形式, 比如 widget["width"];

    当然还有第三种,借助eval()函数,比如,将代码2里的第7行改为以下两行代码:

    1 var str =" widget.show()"; 
    2 eval(str);

    打到一样的效果,麻烦吗?麻烦,但是,借助于eval这个函数调用属性,适用于那些属性名字不知道的情况。。。

    (3)第三种定义对象的方法,比较麻烦。----function,比如代码3

    代码3:

     1 function widget(width) {
    2 this.width = width;
    3 }
    4 widget.prototype = {
    5 show:function(){
    6 alert(this.width);
    7 }
    8 };
    9 var w = new widget("300px");
    10 w.show();

    在javascript里,函数是第一公民,对象可以通过function去创建;这里借助了new关键字;

    代码1-3,是一个构造函数。给对象的width属性赋值;通常模拟创建一个类的时候,在构造函数里只给属性赋值,而在prototype原型里写方法的定义,自然,按照如下的方式去做也不错:

    代码4:

    1 function widget(width) {
    2 this.width = width;
    3 this.show = function(){
    4 alert(this.width);
    5 }
    6 }
    7 var w = new widget("300px");
    8 w.show();


    看起来代码4更有可读性,方法和属性都放到一个function里了。。。但是, 常常采用代码3而弃代码4,

    这样做的好处是:创建多个widget对象的时候,不必反复创建方法show()的副本。。。

    ---待续。。

  • 相关阅读:
    ASP.NET Forms验证(自定义、角色提供程序)B
    SPSiteDataQuery使用说明
    moss2010 仿内容查询部件代码
    微软CRM系统二次开发步骤以及注意事项
    sap ABAP关于Data Reference的使用FIELDSYMBOLS
    selectoptions 模拟parmater
    ABAP "FOR ALL ENTRIES IN" 使用指南
    ABAP/4中参数的传递
    用接口CL_GUI_FRONTEND_SERVICES弹出选择文件对话框
    深入浅出理解索引结构
  • 原文地址:https://www.cnblogs.com/xinchuang/p/2257233.html
Copyright © 2020-2023  润新知