一、javascript中的类
1.找出对象的构造器----constructor/instanceof
constructor是用模版实例化对象的时候附带的一个额外属性,这个属性指向创建该对象时所使用的javascript构造函数。
用法:
var house = new Accommodation(); house.constructor === Accommodation; //true
这中比较也可以用关键字instanceof来完成,
var house = new Accommodation();
apartment instanceof Accomodation; //true
2.通过原型添加属性和方法
javascript中的每个函数,即每个构造器,都有一个叫prototype的属性。我们用关键字new来创建一个“类”的对象实例时,实例中所包含的属性和方法都来自prototype。
可以用点标记法和直接量标记法为一个模版的所有对戏那个实例添加自定义的属性和方法。
点标记法:
//定义一个名为Accommodation的构造函数
function Accommodation(){} //为这个“类”添加属性
Accommodation.prototype.floor = 0;
Accommodation.prototype.rooms = 0;
Accommodation.prototype.shareEntrance =false;
直接量标记法:
//定义一个名为Accommodation的构造函数
function Accommodation(){} //通过对象直接量为这个“类”添加属性和方法
Accommodation.prototype = {
floors:0,
rooms:0,
sharedEntrance:false,
lock:function(){},
}
prototype这个属性关键字有一个强大的特性是允许在对戏那个实例已经被创建后继续添加属性和方法,而这些新添加的属性和方法会自动添加到所有对象实例中,不管是已创建的还是将要创建的。
3.通过作用域添加属性和方法
如果将一个变量或函数定义在任何一个函数之外,直接将其放在一个javascript或者HTML文件里,那么这个变量或函数会被添加到全局作用域中,这意味着在代码的任何位置都能够使用该变量或函数,甚至在其他函数体内也可以。
4.上下文和this关键字
使用this的好处:可以随意改变对象的变量名而不用担心对象中方法的行为收到影响。
上下文环境:在大多数情况下指的是函数运行时封装这个函数的那个对象;当不通过任何一个对象单独调用时,上下文环境值得就是全局的window对象。
注意:对象中的潜逃函数其上下文环境是全局的window对象,而非包含它的那个对象,可以在this指向包含这个函数的对象时,将this的值保存在一个变量中,然后在用到该对象时,用这个变量来代替。比如用变量名为:that
在使用new关键字创建对象时,this执行的值和一般情况下又有区别。this指向的是通过构造函数所创建的那个对象实例。正是因为这个特性,我们得意在构造函数中通过this来设置所有对象实例的属性和方法,而非像之前那样使用prototype关键字。
结合prototype和this关键字来定义对象实例的属性和方法,其中前者定义方法,后者来定义属性。
5.方法的链式调用
如果希望能够对方法进行链式调用,则需要在“类”中的方法最后通过this关键字返回对象实例的引用即可。
一、javascript中的类的更多相关文章
- JavaScript中创建类,赋值给ajax中的data参数
缘由:因为要给根据是否选中checkbox来动态增加ajax中data的属性(ajax的data属性格式的几种方法,参考http://www.jb51.net/article/46676.htm) d ...
- JavaScript中的类
JavaScript类的相关知识 1.例子 /* 例1 */// 定义一个构造函数function Range(from, to){ this.from = from; this.to = ...
- Javascript中的类实现
Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚函数的virtual,不过,Javascript是一门 ...
- JavaScript中定义类的方式详解
本文实例讲述了JavaScript中定义类的方式.分享给大家供大家参考,具体如下: Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的exte ...
- JavaScript中的类继承
JavaScript是一个无class的面向对象语言,它使用原型继承而非类继承.这会让那些使用传统面向对象语言如C++和Java的程序员们感到困惑.正如我们所看到的,JavaScript的原型继承比类 ...
- JavaScript中的类数组对象
在javascript中,对象与数组都是这门语言的原生规范中的基本数据类型,处于并列的位置. 一般来说,如果我们有一个对象obj和一个数组a: obj["attr1"]; / ...
- 深入理解JavaScript中的类继承
由于写本文时全部是在编辑器中边写代码边写感想的,所以,全部思想都写在代码注释里面了 // 类继承 //todo.1 extends 关键字 class Animal { constructor(nam ...
- 《深入理解ES6》笔记—— JavaScript中的类class(9)
ES5中的近类结构 ES5以及之前的版本,没有类的概念,但是聪明的JavaScript开发者,为了实现面向对象,创建了特殊的近类结构. ES5中创建类的方法:新建一个构造函数,定义一个方法并且赋值给构 ...
- JavaScript中的类式继承和原型式继承
最近在看<JavaScript设计模式>这本书,虽然内容比较晦涩,但是细品才发现此书内容的强大.刚看完第四章--继承,来做下笔记. 书中介绍了三种继承方式,类式继承.原型式继承和掺元类继承 ...
随机推荐
- windows系统版本号
windows操作系统版本号 操作系统 版本号 Windows8.1 6.3 Windows8 6.2 Windows7 6.1 Windows Server 2008 R2 6.1 Windows ...
- 切换debian8系统语言环境
想切换操作系统的默认语言环境,可以使用如下命令,而不用重新安装系统: 查看操作系统的语言: # env | grep LANG 使用root导入要使用的系统语言: # export LANG=en_U ...
- Erlang--proplists结构解析
proplists 模块适用数据量较少的场景,处理配置文件和函数选项时常用.proplists对内部数据结构是Key-Value键值对形式,第一个元素做key用来查询和删除,如果一个key有多个值就会 ...
- javase-->基础知识(三)
1.方法 普通方法:4个必要,1个可选 1):必须有返回值类型,没有返回值用void表示 2):必须有名字 3):必须有()和形参 4):必须有{}方法体 5):可选static,表示静态的方法,可以 ...
- PHPCMS_V9 模型字段添加单文件上传功能
后台有“多文件上传”功能,但是对于有些情况,我们只需要上传一个文件,而使用多文件上传功能上传一个文件,而调用时调用一个文件URL太麻烦了. 使用说明: 1.打开phpcms\modules\conte ...
- Android 笔记 文件存取 day5
针对文件的存取 package com.example.file01; import com.example.service.FileService; import android.app.Activ ...
- 各类坐标系相互之间的转换(84互转GC02,GC02互转BD09)
在遥感行业我们经常会用到各类的坐标系相互之间的转换,常见的度分秒转化为度很简单,直接上代码: //经纬度 ////118度48分54.152秒=118+(48/60)+(54.152/3600)=11 ...
- Swift -运算符和循环结构
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #4dbf56 } p.p2 { margin: 0.0px 0. ...
- 优化Web中的性能
优化Web中的性能 简介 web的优化就是一场阻止http请求最终访问到数据库的战争. 优化的方式就是加缓存,在各个节点加缓存. web请求的流程及节点 熟悉流程及节点,才能定位性能的问题.而且优化的 ...
- 安卓手持智能POS端上能扫描开单的软件-店面销售开单系统
安卓移动POS终端上能扫描开单的软件: 一.登录验证,以业务员.密码登录: 二.订单列表,显示相关信息,包括日期.单据号.客户名.金额.单据状态.有新增订单及按特定条件查询订单的功能(日期.客户等). ...