美文网首页
02_JS面向对象

02_JS面向对象

作者: 对方不想理你并向你抛出一个异常 | 来源:发表于2017-09-10 14:40 被阅读0次

知识点

  • 面向对象的概念
  • 面向对象编程举例
  • 设置页面中的div和p的边框为1px solid red
  • 创建一个 div 标签, 并设置其样式, 加入页面中

面向对象的基本概念

面向过程和面向对象的对比

Example 1:洗衣服

面向过程的思维方式:
    step 1:收拾脏衣服
    step 2:打开洗衣机盖
    step 3:将脏衣服放进去
    step 4:设定洗衣程序
    step 5:开始洗衣服
    step 6:打开洗衣机盖子
    step 7:晒衣服

面向对象的思维方式:
    洗衣机需要什么对象?
    女朋友    
    洗衣机

在面向对象的思维方式中:我们只关心要完成事情需要的对象。

总结:面向对象是一种解决问题的思路,一种编程思想。

对象是什么呢?

万物皆对象

JavaScript中的对象是什么?

在JavaScript中,所谓的对象,就是键值对的集合。

比如要描述一个人,这个人有name,age,gender,体现在代码中:

{ name:"张三", age:18, gender:"Male" }

比如要做一个学生管理系统,那学生就是要设计的对象,学生拥有name,age,gender,address,phone,体现在代码中:

{ name:"刘亦菲", age:18, gender:"female", address:"上海", phone:"110" }
总结
  • 面向过程关注的实现功能的步骤,是如何把功能拆解后一步步的实现
  • 面向对象则是关注的实现功能的一系列的对象

面向对象编程举例

设置页面中的div和p的边框为1px solid red

传统的处理办法
// 任务需求:
// 1> 获取div标签
var divs = document.getElementsByTagName( 'div' );
// 2> 遍历获取到的div标签
for(var i = 0; i < divs.length; i++) {
    //3> 获取到每一个div元素,设置div的样式
    divs[i].style.border = "1px dotted black";
}

// 4> 获取p标签
var ps = document.getElementsByTagName("p");
// 5> 遍历获取到的p标签
for(var j = 0; j < ps.length; j++) { 
    // 获取到每一个div元素 设置p标签的样式
    ps[j].style.border = "1px dotted black"; 
}
使用函数进行封装优化
// 通过标签名字来获取页面中的元素 
function tag(tagName) { 
    // var dvs = document.getElementsByTagName(tagName); 
    // return dvs; 
    return document.getElementsByTagName(tagName); 
}

// 封装一个设置样式的函数 
function setStyle(arr) { 
    for(var i = 0; i < arr.length; i++) { 
        // 获取到每一个div元素 
        arr[i].style.border = "1px solid #abc"; 
    } 
}
var dvs = tag("div");
var ps = tag("p");
setStyle(dvs); 
setStyle(ps);
使用面向对象的方式
// 更好的做法:是将功能相近的代码放到一起 
var itcast = { 
    getEle: { 
        tag: function (tagName) { 
            return document.getElementsByTagName(tagName); 
        }, 
        id: function (idName) { 
            return document.getElementById(idName); 
        } 
    },    
    setCss: { 
        setStyle: function (arr) { 
            for(var i = 0; i < arr.length; i++) { 
                arr[i].style.border = "1px solid #abc"; 
            } 
        }, 
        css: function() {}, 
        addClass: function() {}, 
        removeClass: function() {} 
        // ... 
    } 
    // 属性操作模块 
    // 动画模块 
    // 事件模块 
    // ... 
};

var divs = itcast.getEle.tag();
itcast.setCss.setStyle(divs);

创建一个 div 标签, 并设置其样式, 加入页面中

传统的处理办法

<script type="text/javascript">
    //创建一个 div 标签, 并设置其样式, 加入页面中

    //面向过程的思维方式
    //1. 创建div
    var div = document.createElement("div");
    //2. 设置div样式
    div.style.border = "1px solid #c0c0c0";
    div.style.width = "400px";
    div.style.height = "300px";
    //3. 添加div到body中去
    document.body.appendChild(div);
</script>

Jquery方式

也是面向对象的方式

$("body").append("<div style='border: 1px solid red; width: 400px; height: 300px;'></div>");
使用面向对象的方式
// 面向对象的方式去思考:
// 1, 抽取对象( 名词提炼法 ): div, body
// 2, 分析属性与方法( 动词提炼 ): 加到, 设置样式

var divTag = new DivTag(); // 内部应该创建 dom 对象
// 构造函数内部应该创建 dom 对象 div, 同时将其设置为属性
// 需要一个 div 的构造函数
function DivTag() {
    this.DOM = document.createElement( 'div' );
    this.__加到 = function ( node ) {
        // 需要将 this.DOM 加到 node 中
        node.appendChild( this.DOM );
    };
    this.__设置样式 = function ( name, value ) {
        // 设置 this.DOM 的样式
        this.DOM.style[ name ] = value;
    };
}

var divTag = new DivTag();

divTag.__设置样式( 'border', '1px solid red' );
divTag.__设置样式( 'width', '400px' );
divTag.__设置样式( 'height', '100px' );
divTag.__设置样式( 'backgroundColor', 'pink' );

例:


<script type="text/javascript">
    //使用函数将代码封装,使得复用性更高

    //使用函数封装带来的问题:
    //1.全局变量污染
    //2.代码结构不够清晰,维护不方便


    //使用对象进行封装后的优势
    //1.暴露在全局的只有一个对象名 不会造成全局变量污染
    //2.使用对象将代码进行功能模块的划分,有利于日后的维护



    
    //设置页面中的div和p的边框为1px solid red
    //面向过程的方式
    function tag(tagName){
        return document.getElementsByTagName(tagName);
    }

    function setStyle(elements){
        for (var i = 0; i < elements.length; i++) {
            var obj = elements[i];
            obj.style.border = "1px solid red";
        }
    }
    setStyle(tag("div"));
    setStyle(tag("p"));

    //面向对象的方式
    var MJquery = {
        //获取dom元素的方法放入一个对象中
        getElement:{
            tag: function(tagName){
                return document.getElementsByTagName(tagName);
            },
            id: function (id) {
                return document.getElementById(id);
            }
        },
        //设置样式的方法放入一个对象中
        setCss:{
            setStyle: function (elements) {
                for (var i = 0; i < elements.length; i++) {
                    var obj = elements[i];
                    obj.style.border = "1px solid red";
                }
            },
            css: function (option) {

            },
            addClass: function () {

            }
        },
        //事件处理模块
        dealEvent:{
            addEvent: function () {

            }
        }
    };
</script>

相关文章

  • 02_JS面向对象

    知识点 面向对象的概念 面向对象编程举例 设置页面中的div和p的边框为1px solid red 创建一个 di...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • 总结.Net基础知识——献给即将入坑的同行们(一期)

    什么是面向对象 面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP; 通俗...

  • 面向对象基础

    面向对象编程包括: 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程实现(OOP) 面向对象思想...

  • 20-OOP类与对象

    面向对象 Object Oriented 学习面向对象:XXOO 面向对象的学习: 面向过程和面向对象的区别: 面...

  • JavaScript面向对象核心知识归纳

    面向对象 概念 面向对象就是使用对象。面向对象开发就是使用对象开发。 面向过程就是用过程的方式进行开发。面向对象是...

  • 面向对象(未完成)

    面向对象 标签(空格分隔): 面向对象 第一章:面向对象(上) 什么叫面向对象 面向过程、面向对象、两者区别 构造...

  • 面向对象:创建对象&继承

    博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...

  • 面向对象

    了解什么是面向对象 首先,我们学习面向对象,要了解什么是面向对象,面向对象的重要概念:类,对象。 面向对象提出的这...

网友评论

      本文标题:02_JS面向对象

      本文链接:https://www.haomeiwen.com/subject/wpxtkxtx.html