zoukankan      html  css  js  c++  java
  • js6类和对象

    [javascript] view plain copy
     
    1. // 第一种:对象  
    2. var person = {};// 或者var obj = new Object();  
    3. person.name = "king";  
    4. person.age = 20;  
    5. person.Introduce = function () {  
    6.     alert("My name is " + this.name + ". My age is " + this.age);  
    7. };  
    8. person.Introduce();  
    9.   
    10. // 第二种:json格式的对象  
    11. var person = {  
    12.     name: "king",  
    13.     age: 20,  
    14.     Introduce: function () {   
    15.         alert("My name is " + this.name + ". My age is " + this.age);   
    16.     }  
    17. };  
    18. person.Introduce();   
    19. alert(person.name);// king  
    20.   
    21. // 第三种(1):类,类似于默认构造函数  
    22. var Person = function () {  
    23.     this.name = "king";  
    24.     this.age = 20;  
    25.     this.Introduce = function () {  
    26.         alert("My name is " + this.name + ". My age is " + this.age);  
    27.     };  
    28. };  
    29. var person = new Person();// 或者var person = Person();  
    30. person.Introduce();  
    31. alert(person.name);// 输出:king  
    32. alert(person["name"]);// 也可以使用json的访问方式,说明使用function定义类与第二种是等效的  
    33. alert(person.age);// 输出:20  
    34.   
    35. // 第三种(2):区别仅在于第一行的声明  
    36. function Person () {  
    37.     this.name = "king";  
    38.     this.age = 20;  
    39.     this.Introduce = function () {  
    40.         alert("My name is " + this.name + ". My age is " + this.age);  
    41.     };  
    42. };  
    43. var person = new Person();  
    44. person.Introduce();  
    45. alert(person.name);// 输出:king  
    46. alert(person.age);// 输出:20  
    47.   
    48. // 第四种(1):可定制的类,类似构造函数  
    49. var Person = function (name, age) {  
    50.     this.name = name;  
    51.     this.age = age;  
    52.     this.Introduce = function () {  
    53.         alert("My name is " + this.name + ". My age is " + this.age);  
    54.     };  
    55. };  
    56. var person = new Person("king", 20);  
    57. person.Introduce();  
    58. alert(person.name);// 输出:king  
    59. alert(person.age);// 输出:20  
    60.   
    61. // 第四种(2):  
    62. function Person (name, age) {  
    63.     this.name = name;  
    64.     this.age = age;  
    65.     this.Introduce = function () {  
    66.         alert("My name is " + this.name + ". My age is " + this.age);  
    67.     };  
    68. };  
    69. var person = new Person("king", 20);  
    70. person.Introduce();  
    71. alert(person.name);// 输出:king  
    72. alert(person.age);// 输出:20  
    73.   
    74. // 第五种:变量的封装,将其改为私有。采用了闭包。  
    75. // 在function中用this引用当前对象,通过对属性的赋值来声明属性。即this定义的为公有  
    76. // 如果用var声明变量,则该变量为局部变量,只允许在类定义中调用。即var定义的为私有,不用var则为全局  
    77. var Person = function (name, age) {  
    78.     var name = name;  
    79.     var age = age;  
    80.     this.GetName = function () {  
    81.         return name;  
    82.     }  
    83.     this.GetAge = function () {  
    84.         return age;  
    85.     }  
    86.     this.Introduce = function () {  
    87.         alert("My name is " + name + ". My age is " + age);  
    88.     };  
    89. };  
    90. var person = new Person("king", 20);  
    91. alert(person["name"]);// undefined  
    92. alert(person.GetName());// king  
    93.   
    94. // 第五种(2):可参考第三种(2)和第四种(2)  
    95.   
    96. // 第六种(1):在函数体中创建一个对象(使用第二种),声明其属性再返回  
    97. function Person() {  
    98.     var obj =  
    99.     {  
    100.         'age':20,  
    101.         'name':'king'  
    102.     };  
    103.     return obj;  
    104. }  
    105. var person = new Person();  
    106. alert(person.age);// 输出:20  
    107. alert(person.name);// 输出:king  
    108.   
    109. // 第六种(2):函数体内创建对象时使用第一种方法  
    110. function Person() {  
    111.     var obj = new Object();  
    112.     obj.age = 20;  
    113.     obj.name = 'king';  
    114.     return obj;  
    115. }  
    116. var person = new Person();  
    117. alert(person.age);// 输出:20  
    118. alert(person.name);// 输出:king  

    小结:上述第一种、第二种方法为直接创建一个对象字面量。第二种到第六种方法相当于提供了类,使用new操作符(可省略)创建对象实例。

  • 相关阅读:
    seajs加载angularjs
    seajs加载jquery提示$ is not a function
    java 动态代理
    C#第三章--对象和类
    Android笔记--两种双击退出程序的方法
    Android--Volley基本用法及自定义
    Win10专业版只要12.99元?应用商店Bug福利也算数
    新人报道
    排序

  • 原文地址:https://www.cnblogs.com/liangxiaofeng/p/5935706.html
Copyright © 2011-2022 走看看