在现在的网页中,选项卡(我自己这样子叫)是非常普遍的,也是比较基础,学了原型实现选项卡也挺久了,最近在学ES6,学了用类实现选项卡,今天就在此做个总结,别的废话也不多说。

以“貌”说这货

外貌——还好,长得挺帅





(自己理解的)选项卡:就是通过点击头部切换内容的货。

怎么得到这货

html代码

<div id="div1">
<input type="button" value="出国" class="active">
<input type="button" value="留学">
<input type="button" value="旅游">
<div style='display: block'>123</div>
<div>456</div>
<div>789</div>
</div>

css代码

#div1 div{
width: 200px;
height: 200px;
border: 1px solid #ccc;
display: none;
}
.active {
background: orange;
}

js代码

入门

window.onload=function ()
{
var oDiv=document.getElementById('div1');
var aBtn=oDiv.getElementsByTagName('input');
var aDiv=oDiv.getElementsByTagName('div'); for(var i=0;i<aBtn.length;i++)
{
aBtn[i].index=i;
aBtn[i].onclick=function ()
{
for(var i=0;i<aBtn.length;i++)
{
aBtn[i].className='';
aDiv[i].style.display='none';
}
this.className='active';
//alert(this.index);
aDiv[this.index].style.display='block';
};
}
};

面向对象

 window.onload = function (){
new tab('div1');
}

用原型实现

function tab(id)
{
var oDiv = document.getElementById(id);
this.aBtn = oDiv.getElementsTagName('input');
this.aDiv = oDiv.getElemetsTagName('div'); var _this = this;
for(var i=0;i<this.aBtn.length;i++){
this.aBtn[i].index = i;
this.aDiv[i].addEventListener('click',function(){
_this.tabSwitch(this);
},false)
}
} tab.prototype.tabSwitch = function (oBtn){
for(var i=0;i<this.aBtn.length;i++)
{
this.aBtn[i].className = '';
this.aDiv[i].style.display = 'none';
}
oBtn.className = 'avtive';
this.aDiv[oBtn.index].style.display = 'block';
}

用ES6引进的类class实现

class tab {
constructor(id) {
var oDiv = document.getElementById(id);
this.aBtn = oDiv.getElementsByTagName('input');
this.aDiv = oDiv.getElementsByTagName('div'); var _this = this;
for (var i = 0; i < this.aBtn.length; i++) {
this.aBtn[i].index = i;
this.aBtn[i].addEventListener('click', function () {
_this.tabSwitch(this);
}, false)
}
}
tabSwitch(oBtn) {
for (var i = 0; i < this.aBtn.length; i++) {
this.aBtn[i].className = '';
this.aDiv[i].style.display = 'none';
}
oBtn.className = 'active';
this.aDiv[oBtn.index].style.display = 'block';
}
}

关于面向对象(自己的理解)

1.何为对象?

对象,就是拥有属性和方法的集合。

2.何为面向对象?

根据面向对象的三大特征:

多态:多种状态;

封装:把功能封装成工具,不用过多的理会怎么实现的,会使用就行;

继承:跟css继承性类似,继承父的属性和方法。

3.js里的面对对象与Java中的面对对象的区别

js是基于原型的面对对象,而Java是类的面向对象

4.怎么理解js里的原型?

原型可以用css里class去类似理解,就是一组元素通过原型实现相同属性、方法的。

5.

用原型写面向对象

function User(name, pass)
{
this.name=name;
this.pass=pass;
}; User.prototype.showName=function()
{
alert(this.name);
}
User.prototype.showPass=function(){
alert(this.pass);
} function VipUser(name, pass, level){
User.call(this, name, pass); this.level = level;
}
VipUser.prototype=new User();
VipUser.prototype.constructor=VipUser;
/*for(var i in User.prototype)
{
VipUser[i].prototype = User[i].prototype;
}*/
VipUser.prototype.showLevel=function(){
alert(this.level);
};

用类写面向对象

class person
{
constructor(name, age){
this.name = name;
this.age = age;
}
showName(){
alert(this.name);
}
showAge(){
alert(this.age);
}
}
class vip extends person
{
constructor(name,age,sex) {
super(name, age);
this.sex = sex;
}
showSex(){
alert(this.sex);
}
}

以选项卡的故事扯扯js面向对象的更多相关文章

  1. 【面向对象】用大白话扯扯那"神奇"的面向对象编程思维(二)

    前言: 上一章我们用大白话讲解了一下面向对象的编程思维,那么这一张我们来讲讲如何用面向对象来书写代码.终于到了激动人心的时刻了..... 传送门:https://www.cnblogs.com/sy1 ...

  2. js面向对象+一般方法的选项卡

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 原生js面向对象编程-选项卡(自动轮播)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. 原生js面向对象编程-选项卡(点击)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. 第十五节 JS面向对象实例及高级

    实例:面向对象的选项卡 把面向过程的程序,改写成面向对象的形式 原则:不能有函数套函数,但可以有全局变量 过程: onload —— 改写成 构造函数,其中window.onload的功能是在页面加载 ...

  6. js面向对象、创建对象的工厂模式、构造函数模式、原型链模式

    JS面向对象编程(转载) 什么是面向对象编程(OOP)?用对象的思想去写代码,就是面向对象编程. 面向对象编程的特点 抽象:抓住核心问题 封装:只能通过对象来访问方法 继承:从已有对象上继承出新的对象 ...

  7. ES6学习笔记(三):教你用js面向对象思维来实现 tab栏增删改查功能

    前两篇文章主要介绍了类和对象.类的继承,如果想了解更多理论请查阅<ES6学习笔记(一):轻松搞懂面向对象编程.类和对象>.<ES6学习笔记(二):教你玩转类的继承和类的对象>, ...

  8. JS面向对象介绍

    JS面向对象介绍 首先面向对象是什么?为什么要使用面向对象. 因为JavaScript对每个创建的对象都会自动设置一个原型(谷歌火狐中是proto),指向它的原型对象prototype,举个例子: f ...

  9. js 面向对象 动态添加标签

    有点逻辑 上代码 thml布局 点击查看代码 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  10. js面向对象学习 - 对象概念及创建对象

    原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...

随机推荐

  1. (转)The C10K problem翻译

    The C10K problem 如今的web服务器需要同时处理一万个以上的客户端了,难道不是吗?毕竟如今的网络是个big place了. 现在的计算机也很强大了,你只需要花大概$1200就可以买一个 ...

  2. SFTP工具类

    1.SFTP搭建方法: 地址: http://www.jb51.net/article/101405.htm https://blog.csdn.net/helloloser/article/deta ...

  3. yii2 緩存

    1.Yii框架的缓存 主要就是“memcache” 和 “cache”两种 Yii的自带缓存都继承CCache 类, 在使用上基本没有区别 2.使用方法 (1)在config配置文件main.php文 ...

  4. swiper4自动轮播切换手动触碰后停止踩坑——属性disableOnInteraction

    swiper4轮播设置autoplay自动切换后,即默认设置: <script> var mySwiper = new Swiper('.swiper-container', { auto ...

  5. IOS gallery

    https://github.com/mengxianliang/XLCardSwitch

  6. linux的基本操作(磁盘管理)

    磁盘管理 [查看磁盘或者目录的容量 df 和 du] df 查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认是按k为单位显示的 df常用参数有 –i -h -k –m等 -i 使用 ...

  7. oracle数据库字符集查询

    1>数据库服务器字符集 select * from nls_database_parameters,其来源于props$,是表示数据库的字符集. 查询结果如下 NLS_LANGUAGE AMER ...

  8. eclipse解决js提示

    自学js,发现eclipse中不管js文件.html文件.jsp文件没有都没js代码的提示,对于js代码也不报错,有时候就因为单词敲错却查了很久没查出来,很烦很难受. 在网上找了很多方法,都没有解决, ...

  9. 如何将PDF文件转Word,有什么方法

    PDF文件怎样转换成Word呢?在现在的日常办公中PDF文件和Word文件都是办公必不可少的两种文件格式了.那么当我们在工作中需要对这两种文件进行转换时,我们应该怎样实现呢?下面我们就一起来看一下吧. ...

  10. Java Web 笔试(面试)题

    1.Servlet 的生命周期,并说出 Servlet 与 CGI 的区别 Web 容器加载 Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其 init 方法进行 Servle ...