《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 安装并启动 ...
随机推荐
- 第一百二十六节,JavaScript,XPath操作xml节点
第一百二十六节,JavaScript,XPath操作xml节点 学习要点: 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段,对比之前使用标准 ...
- SublimeText快捷键
在我做了一次包含一些现场编码的演示后,一些观众问我是如何操作这么快.当然这里没有唯一的答案,答案是一堆简单的快捷键和大量的实践的组合.为了回应那些询问,我觉得有必要看看我每天想都不用想且使用的快捷键. ...
- 【LeeetCode】4. Median of Two Sorted Arrays
There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...
- php学习笔记——基础知识(2)
9.PHP语句 if 语句 - 如果指定条件为真,则执行代码 if...else 语句 - 如果条件为 true,则执行代码:如果条件为 false,则执行另一端代码 if...else if.... ...
- >> 关于计算机有符号数的符号拓展(sign extension)问题
这里首先阐述相关规律, 情况为将位数较少的有符号存储空间中取出数据并放入更大有符号存储空间, 如: char → short . 规律: 将原空间符号位重复填充至新空间剩余位. eg.(负数情况, ...
- bootstrap 混合标签
<html lang="zh_cn"> <head> <meta charset="utf-8"> <meta htt ...
- gamma
图:显卡(驱动程序)上的Gamma设置 图:ACDSEE中的曝光调节 二. 什么是Gamma? 2.1. 显示器Gamma曲线 Gamma可能源于CRT(显示器/电视机)的响应曲线,即其亮度与输入电压 ...
- 【IE6的疯狂之九】li在IE中底部空行的BUG
曾经写过[IE6的疯狂之六]li在IE中底部3像素的BUG(增加浮动解决问题),原文地址:http://www.css88.com/archives/421: IE6 BUG大全: http://ww ...
- js的严格模式
严格模式: 严格模式这下的主要区别如下: 严格模式下的好处:
- Centos 下安装Zabbix Linux 客户端
今天在linux上安装了客户端,过程如下: (1)下载zabbix客户端软件 wget www.zabbix.com/downloads/2.0.3/zabbix_agents_2.0.3.linux ...