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

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

js6类和对象的更多相关文章

  1. Java编程里的类和对象

    像我们搞计算机这块的,都知道这么一件事,当前的计算机编程语言主要分为两大块,一为面向过程,二为面向对象.Java就是一门纯面向对象的语言.学习了一个月左右的Java,在下对于Java当中的类和对象有了 ...

  2. Python - 类与对象的方法

    类与对象的方法

  3. C++基础知识(5)---类和对象

    终于把C++中的基础在前面的几篇博客中总结完了,可能还有一些语法还没有总结到,没关系,以后用到了再查资料就好.类是C++中的一个非常重要的概念,这是区别你使用的C++到底是面向过程还是面向对象的一个重 ...

  4. 简述JavaScript对象、数组对象与类数组对象

    问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...

  5. 前端学PHP之面向对象系列第一篇——类和对象

    × 目录 [1]类 [2]成员属性[3]成员方法[4]对象[5]成员访问[6]this 前面的话 面向对象程序设计(OOP)是一种计算机编程架构.计算机程序由单个能够起到子程序作用的单元或对象组成,为 ...

  6. Objective-C Runtime 运行时之一:类与对象

    Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一 ...

  7. [Java入门笔记] 面向对象编程基础(一):类和对象

    什么是面向对象编程? 我们先来看看几个概念: 面向过程程序设计 面向过程,是根据事情发展的步骤,按进行的顺序过程划分,面向过程其实是最为实际的一种思考方式,可以说面向过程是一种基础的方法,它考虑的是实 ...

  8. 解析Java类和对象的初始化过程

    类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...

  9. 02OC的类和对象

    这章重点介绍OC的类以及对象,由于C语言是面向过程语言,而OC只是对于C语言多了一些面向对象的特性,所以OC相对于其他面向对象语言,例如C#.Java等没有那么多的语法特性,所以差别还是比较大的. 一 ...

随机推荐

  1. sprint演示

  2. java多态性

    多态分两种: (1)   编译时多态(设计时多态):方法重载. (2)   运行时多态:JAVA运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态.(我们平时说得多的事运行时 ...

  3. WDR7500 花生壳问题

    新进一WDR7500 居然不能解析花生壳. 百度一番, 发现别人有同样的问题. 找来找去从别人的只言片语中发现需要升级固件. 好不容易加入一个群, 把固件下下来. 升级固件, 重新设置, 解析成功. ...

  4. C#函数过载

    什么是method?函数也.overloading,是过载的意思.为什么会过载呢?因为一个函数,本来后面拖着两个参数的,现在拖着三个参数了,那不是过载是什么? 为什么同一个函数,后面可以跟两个参数,也 ...

  5. JQ 操作 radio、checkbox 、select

    MXS&Vincene  ─╄OvЁ  &0000026─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好, ...

  6. Java虚拟机学习(5):类加载器(ClassLoader

    类加载器 类加载器(ClassLoader)用来加载 class字节码到 Java 虚拟机中.一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源文件在经过 Javac之后就被转换成 ...

  7. html与jsp

    1. 什么是 HTML 语言? HTML文件有什么特征? 答:HTML是超文本标记语言(Hypertext Mark-up Language)的缩写,主要用来创建与系统平台无关的网页文档.它是目前网络 ...

  8. treegrid and datagrid ctrl or shift selectRow

    var tg = $('#tg');tg.treegrid({...}); // create treegridvar panel = tg.treegrid('getPanel');var body ...

  9. asp.net 微信支付 错误解决方案

    asp.net 微信支付 错误解决方案 在网上看到有人解决方案为: 解决方法 出现这种错误网上查出现有的原因是: 订阅号没有相关的权限 账号没有认证,没有相关的权限 那么这里遇到问题两种都不是.开发账 ...

  10. jQuery 效果 —— 滑动

    jQuery 效果 -- 滑动 1.向下滑动元素 (1)使用slideDown()方法可以用于向下滑动元素 $("button").click(function(){ $(&quo ...