js6类和对象
- // 第一种:对象
- var person = {};// 或者var obj = new Object();
- person.name = "king";
- person.age = 20;
- person.Introduce = function () {
- alert("My name is " + this.name + ". My age is " + this.age);
- };
- person.Introduce();
- // 第二种:json格式的对象
- var person = {
- name: "king",
- age: 20,
- Introduce: function () {
- alert("My name is " + this.name + ". My age is " + this.age);
- }
- };
- person.Introduce();
- alert(person.name);// king
- // 第三种(1):类,类似于默认构造函数
- var Person = function () {
- this.name = "king";
- this.age = 20;
- this.Introduce = function () {
- alert("My name is " + this.name + ". My age is " + this.age);
- };
- };
- var person = new Person();// 或者var person = Person();
- person.Introduce();
- alert(person.name);// 输出:king
- alert(person["name"]);// 也可以使用json的访问方式,说明使用function定义类与第二种是等效的
- alert(person.age);// 输出:20
- // 第三种(2):区别仅在于第一行的声明
- function Person () {
- this.name = "king";
- this.age = 20;
- this.Introduce = function () {
- alert("My name is " + this.name + ". My age is " + this.age);
- };
- };
- var person = new Person();
- person.Introduce();
- alert(person.name);// 输出:king
- alert(person.age);// 输出:20
- // 第四种(1):可定制的类,类似构造函数
- var Person = function (name, age) {
- this.name = name;
- this.age = age;
- this.Introduce = function () {
- alert("My name is " + this.name + ". My age is " + this.age);
- };
- };
- var person = new Person("king", 20);
- person.Introduce();
- alert(person.name);// 输出:king
- alert(person.age);// 输出:20
- // 第四种(2):
- function Person (name, age) {
- this.name = name;
- this.age = age;
- this.Introduce = function () {
- alert("My name is " + this.name + ". My age is " + this.age);
- };
- };
- var person = new Person("king", 20);
- person.Introduce();
- alert(person.name);// 输出:king
- alert(person.age);// 输出:20
- // 第五种:变量的封装,将其改为私有。采用了闭包。
- // 在function中用this引用当前对象,通过对属性的赋值来声明属性。即this定义的为公有
- // 如果用var声明变量,则该变量为局部变量,只允许在类定义中调用。即var定义的为私有,不用var则为全局
- var Person = function (name, age) {
- var name = name;
- var age = age;
- this.GetName = function () {
- return name;
- }
- this.GetAge = function () {
- return age;
- }
- this.Introduce = function () {
- alert("My name is " + name + ". My age is " + age);
- };
- };
- var person = new Person("king", 20);
- alert(person["name"]);// undefined
- alert(person.GetName());// king
- // 第五种(2):可参考第三种(2)和第四种(2)
- // 第六种(1):在函数体中创建一个对象(使用第二种),声明其属性再返回
- function Person() {
- var obj =
- {
- 'age':20,
- 'name':'king'
- };
- return obj;
- }
- var person = new Person();
- alert(person.age);// 输出:20
- alert(person.name);// 输出:king
- // 第六种(2):函数体内创建对象时使用第一种方法
- function Person() {
- var obj = new Object();
- obj.age = 20;
- obj.name = 'king';
- return obj;
- }
- var person = new Person();
- alert(person.age);// 输出:20
- alert(person.name);// 输出:king
小结:上述第一种、第二种方法为直接创建一个对象字面量。第二种到第六种方法相当于提供了类,使用new操作符(可省略)创建对象实例。
js6类和对象的更多相关文章
- Java编程里的类和对象
像我们搞计算机这块的,都知道这么一件事,当前的计算机编程语言主要分为两大块,一为面向过程,二为面向对象.Java就是一门纯面向对象的语言.学习了一个月左右的Java,在下对于Java当中的类和对象有了 ...
- Python - 类与对象的方法
类与对象的方法
- C++基础知识(5)---类和对象
终于把C++中的基础在前面的几篇博客中总结完了,可能还有一些语法还没有总结到,没关系,以后用到了再查资料就好.类是C++中的一个非常重要的概念,这是区别你使用的C++到底是面向过程还是面向对象的一个重 ...
- 简述JavaScript对象、数组对象与类数组对象
问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...
- 前端学PHP之面向对象系列第一篇——类和对象
× 目录 [1]类 [2]成员属性[3]成员方法[4]对象[5]成员访问[6]this 前面的话 面向对象程序设计(OOP)是一种计算机编程架构.计算机程序由单个能够起到子程序作用的单元或对象组成,为 ...
- Objective-C Runtime 运行时之一:类与对象
Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一 ...
- [Java入门笔记] 面向对象编程基础(一):类和对象
什么是面向对象编程? 我们先来看看几个概念: 面向过程程序设计 面向过程,是根据事情发展的步骤,按进行的顺序过程划分,面向过程其实是最为实际的一种思考方式,可以说面向过程是一种基础的方法,它考虑的是实 ...
- 解析Java类和对象的初始化过程
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...
- 02OC的类和对象
这章重点介绍OC的类以及对象,由于C语言是面向过程语言,而OC只是对于C语言多了一些面向对象的特性,所以OC相对于其他面向对象语言,例如C#.Java等没有那么多的语法特性,所以差别还是比较大的. 一 ...
随机推荐
- 20145320《Java程序设计》第4周学习总结
20145320<Java程序设计>第4周学习总结 教材学习内容总结 第六章 继承与多态 继承 继承作为面向对象的第二大特征,避免多个类间重复定义共同行为.即当多个类中存在相同属性和行为时 ...
- linux 查看磁盘剩余命令
df -hl命令查看各磁盘的大小,使用情况,挂载点等信息. du -bs dir_name查看具体目录的空间大小
- qunit学习(一)
QUnit是一个强大的JavaScript单元测试框架,用于调试代码.该框架是由jQuery团队的成员所开发,并且是jQuery的官方测试套件.任意正规JavaScript代码QUnit都能测试. 其 ...
- SpringMvc自定义拦截器
SpringMvc也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义拦截器必须实现HandlerInterceptor接口 -preHandle():这个方法在业务处理器 ...
- android-eclipse-phonegap 2..9以下(包含2.9)的项目配置
1.搭建android.eclipse环境,下载phonegap 2.9包 2.新建android项目 3.拷贝phonegap-2.9.0\lib\android\cordova-2.9.0.jar ...
- 19. 星际争霸之php设计模式--迭代器模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 解决qt程序的链接阶段出现 undefined reference 错误
错误的原因是我使用到了 QT Widgets 模块中的东西,但是makefile的链接的参数中没有 widgets.其实官网上提到了这个: http://doc.qt.io/qt-5/qtwidget ...
- cxf(3.1.1) 异常Caused by: java.io.FileNotFoundException: class path resource [META-INF/cxf/cxf-extension-soap.xml]
Caused by: java.io.FileNotFoundException: class path resource [META-INF/cxf/cxf-extension-soap.xml] ...
- asp.net关于页面不回发,不生成__doPostBack方法问题的完美解决方案
1.有可能是使用net4.0+iis6之后没有打补丁.解决办法在IE10中登录我公司的一个网站时,点击其它菜单,页面总会自动重新退出到登录页,后检查发现,IE10送出的HTTP头,和.AUTH Coo ...
- Maven单元测试报告及测试覆盖率
对junit单元测试的报告:类似这样的结果 ------------------------------------------------------- T E S T S ----------- ...