广

JavaScript

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    [JavaScript基础教程]创建自己的对象

    2018-04-03 22:13:30 次阅读 稿源:互联网
    零七广告

    要创建自己的对象实例,必须首先为其定义一个构造函数。构造函数创建一个新对象,赋予对象属性,并在合适的时候赋予方法。例如,下面的示例为 pasta 对象定义了构造函数。注意 this 关键字的使用,它指向当前对象。

    1. // pasta 是有四个参数的构造器。 
    2. function pasta(grain, width, shape, hasEgg) 
    3.     // 是用什么粮食做的? 
    4.     this.grain = grain; 
    5.  
    6.     // 多宽?(数值) 
    7.     this.width = width;      
    8.  
    9.     // 横截面形状?(字符串) 
    10.     this.shape = shape;    
    11.  
    12. // 是否加蛋黄?(boolean) 
    13.     this.hasEgg = hasEgg;   

    定义了对象构造器后,用 new 运算符创建对象实例。

    1. var spaghetti = new pasta("wheat", 0.2, "circle"true); 
    2. var linguine = new pasta("wheat", 0.3, "oval"true); 

    可以给对象实例添加属性以改变该实例,但是用相同的构造器生成的其他对象定义中并不包括这些属性,而且除非你特意添加这些属性那么在其他实例中并不显示出来。如果要将对象所有实例的附加属性显示出来,必须将它们添加到构造函数或构造器原型对象(原型在高级文档中讨论)中。

    1. // spaghetti 的附加属性。 
    2. spaghetti.color = "pale straw"
    3. spaghetti.drycook = 7; 
    4. spaghetti.freshcook = 0.5; 
    5.  
    6. var chowFun = new pasta("rice", 3, "flat"false);  
    7. // chowFun 对象或其他现有的 pasta 对象 
    8. // 都没有添加到 spaghetti 对象 
    9. // 的三个新属性。 
    10.  
    11.  
    12. // 将属性‘foodgroup’加到 pasta 原型对象 
    13. // 中,这样 pasta 对象的所有实例都可以有该属性, 
    14. // 包括那些已经生成的实例。 
    15. pasta.prototype.foodgroup = "carbohydrates" 
    16.  
    17. // 现在 spaghetti.foodgroup、chowFun.foodgroup,等等 
    18. // 均包含值“carbohydrates”。 

    在定义中包含方法

    可以在对象的定义中包含方法(函数)。一种方法是在引用别处定义的函数的构造函数中添加一个属性。例如,下面的示例扩充上面定义的 pasta 构造函数以包含 toString 方法,该方法将在显示对象的值时被调用。

    1. // pasta 是有四个参数的构造器。 
    2. // 第一部分与上面相同。 
    3. function pasta(grain, width, shape, hasEgg) 
    4.     // 用什么粮食做的? 
    5.     this.grain = grain; 
    6.  
    7.     // 多宽?(数值) 
    8.     this.width = width;      
    9.  
    10.     // 横截面形状?(字符串) 
    11.     this.shape = shape;    
    12.  
    13.     // 是否加蛋黄?(boolean) 
    14.     this.hasEgg = hasEgg;   
    15.  
    16.     // 这里添加 toString 方法(如下定义)。 
    17.     // 注意在函数的名称后没有加圆括号; 
    18.     // 这不是一个函数调用,而是 
    19.     // 对函数自身的引用。 
    20.     this.toString = pastaToString; 
    21.  
    22. // 实际的用来显示 past 对象内容的函数。  
    23. function pastaToString() 
    24.     // 返回对象的属性。 
    25.  
    26.     return "Grain: " + this.grain + "/n" + 
    27.         "Width: " + this.width + "/n" + 
    28.         "Shape: " + this.shape + "/n" + 
    29.         "Egg?: " + Boolean(this.hasEgg); 
    30.  
    31. var spaghetti = new pasta("wheat", 0.2, "circle"true); 
    32. // 将调用 toString() 并显示 spaghetti 对象 
    33. // 的属性(需要Internet 浏览器)。 
    34. window.alert(spaghetti); 

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告