《JS中的面向对象技术》
内容要点:
1.什么是对象:JS权威指南学习总结-第六章 ,(有句话:一切都是对象)
2.什么面向对象
使用对象时,只关注对象提供的功能,不关注其内部细节,比如jQuery。面向对象是一种通用思想,并非只有编程中使用,任何事情都可以用。
3.JS中面向对象三大特征: 封装、继承、多态
4.JS自定义对象(三大对象两大属性):
4.1创建对象方式:方法1:对象初始化的方法,就是通过对象直接量创建的对象。方法2:通过关键字new和构造函数的方法创建对象
4.2对象属性定义:私有属性、对象属性、类属性
4.3对象方法定义:私有方法、对象方法、类方法
4.1创建对象的两种方法:
方法1:对象初始化的方法,就是通过对象直接量创建的对象。方法2:通过关键字new和构造函数的方法创建对象
方法1:通过对象初始化的方法创建对象:
var person={
name:"xingoo", //对象的属性
age:26,
//对象的方法:如果函数挂载在一个对象上,作为对象的一个属性,就称它为对象的方法
say:function(){ console.log("say something"); },
//当通过这个对象来调用函数时,该对象就是此次调用的上下文,也就是该函数的this的值。
action:function(){ console.log("do something");
}
};
console.log(person.name); //xinggo
console.log(person.age); //26
person.say();//say something
person.action(); //do something
方法二.通过构造函数创建对象:
function student(name,age){ //用于初始化一个新创建的对象的函数称为构造函数
this.name = name;
this.age = age;
this.say = function(){
console.log("say something");
}
this.action = function(){
console.log("do something");
}
}
var xingoo = new student("xingoo",27); //关键字new做了两件事情:帮助创建一个空白对象,并返回了这个对象
console.log(xingoo.name); //xingoo
console.log(xingoo.age); //27
xingoo.say(); //say something
xingoo.action(); //do something
4.2对象的属性:私有属性、对象属性、类属性;
对象属性需要创建对象后才能使用;
私有属性在内部可以直接使用,在外部需要通过闭包才能使用。
类属性可以通过对象名称直接使用。
function func(){
this.objPro1 = "对象属性";
func.prototype.objPro2 = "对象属性";
var privatePro = "私有属性";
}
func.classPro = "类属性";
console.log(func.classPro); //类属性
var f = new func();
console.log(f.objPro1);//对象属性
console.log(f.objPro2);//对象属性
<!-- 私有属性可以通过闭包获取 -->
4.3对象的方法:私有方法、对象方法、类方法
function demoFunc1(){
var privateFunc = function(){ console.log("this is privateFunc"); }; //私有方法
privateFunc();
this.objFunc1 = function(){ console.log("this is objFunc1"); };//对象方法
demoFunc1.prototype.objFunc2 = function(){ console.log("this is objFunc2"); };
}
demoFunc1.classFunc = function(){ console.log("this is classFunc"); };//类方法
demoFunc1.classFunc(); //this is classFunc
var f = new demoFunc1();//this is privateFunc
f.objFunc1();//this is objFunc1
f.objFunc2();//this is objFunc2
5.JS中面向对象三大特征: 封装、继承、多态
封装:不考虑内部实现,只考虑功能使用
继承:从已有的对象上继承出新的对象。注:apply()实现属性和方法的继承(8.7函数的方法),prototype实现原型的继承
多态:子类的方法会覆盖父类的方法,即表现出多态性。
继承特性:
function Animal(name,age){
this.name = name;
this.age =age;
this.say = function(){ console.log("animal say something"); }
}
function Cat(name,age){
Animal.apply(this,[name,age]);
}
<!-- Cat.prototype = new Animal();-->
var cat1 = new Cat("xingoo",3);
console.log(cat1.name);//xingoo
console.log(cat1.age); //3
cat1.say(); //animal say something
console.log(Cat.prototype); //原型是:Cat{},_proto_:Cat
如果开启注释的部分,可以发现,cat类的原型也变成了Animal。
多态特性:
子类的方法会覆盖父类的方法,即表现出多态性;注,在面向对象编程中,类B可以继承自另外一个类A,我们将A称为父类,将B称为子类。
function Pig(name,age){
this.say = function(){ console.log("i am pig"); }
}
Pig.prototype = new Animal();
function Dog(name,age){
this.say = function(){ console.log("i am dog"); }
}
Dog.prototype = new Animal();
function say(animal){
if(animal instanceof Animal){ animal.say(); }
}
var dog = new Dog();
var pig = new Pig();
say(dog); //i am dog
say(pig); //i am Pig
《JS中的面向对象技术》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- C++继承、多态、虚函数
#答案:http://www.cnblogs.com/tinaluo/articles/6290994.html 1 编写程序:定义一个抽象基类sharpe,只有包含一个求面积的纯虚函数,派生出矩形类 ...
- Docker集群实验环境布署--swarm【6 配置上层Nginx代理,让任意Docker client访问得到高可用的管理API】
10.40.42.10上,也就是对应的VRRP中的10.40.42.1和2上,配置nginx tcp代理 # cat 4000_manager.venic.com_10.40.100.141-14 ...
- 修改linux默认ssh 端口
修改ssh的默认端口 1.编辑ssh配置文件: #vi /etc/ssh/ssh_config #vi /etc/ssh/sshd_config ...
- 数据持久层框架iBatis, Hibernate 与 JPA 比较
在本文中我们介绍并比较两种最流行的开源持久框架:iBATIS和Hibernate,我们还会讨论到Java Persistence API(JPA).我们介绍每种解决方案并讨论其所规定的品质,以及在广泛 ...
- Python高手之路【九】python基础之迭代器与生成器
迭代器与生成器 1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外 ...
- iOS 10 之后,相机权限问题及易出现的Crash
1: iOS 10 之后,访问相机需要设置相关的权限 麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风? 相机权限: Priva ...
- Lamada转化字符类型
//SN为字符串类型,将其转换成Int等数字类型 ---第一种 List<Testing_Report_Enclosureslist> enclosuresList = _db.Testi ...
- 第六届全球游戏大会( GMGC 北京 2017 )有哪些看点?
全球游戏大会作为亚太地区极具影响力的全球性游戏行业盛会,本次第六届全球游戏大会( GMGC 北京 2017 )将力邀全球50个国家.500多位业界领袖.5000多家企业.50000多位业界精英参展参会 ...
- github从上传代码到发布静态网站
1.上传代码 第一步:建立git仓库 cd到你的本地项目根目录下,执行git命令 git init 第二步:将项目的所有文件添加到仓库中 git add . 如果想添加某个特定的文件,只需把.换成特定 ...
- NOIP2016游记(非题解)
去年的比赛现在来发是不是晚了. -------------------------------- Day1-白天 出发啦, 动车购票处一群丧病的又在玩售票机 动车上看到胡神打苍蝇 苍蝇打苍蝇 在车上颓 ...