美文网首页
JS面向过程和面向对象

JS面向过程和面向对象

作者: 橙赎 | 来源:发表于2020-03-30 18:28 被阅读0次

一、面向对象和面向过程

  • 面向过程:面向过程专注于如何去解决一个问题的过程步骤

  • 面向对象:把解决问题的关注点,放到解决问题需要的一些对象身上。

举例简单说明:把html_javascript_css这句话分割成[html,javascript,css],分别用面向过程和面向对象的思想来写这个例子。
面向过程:

const splitStrOne = () => {
            let s = 'html_javascript_css'; // [html,javascript,css]

            //分析: 遍历每一个字符,判断是否_,如果不是_,拼接成字符串存储入数组,
            let array = []
            let str = '';
            for (let i = 0; i < s.length; i++) {
                const item = s.charAt(i);

                if (item != '_') {
                    str = str + item; //str: h   str:ht   str:htm  str:html   str:html   str:css
                } else {
                    array.push(str); // [html]
                    str = '';
                }
                if (s.length - 1 == i) {
                    array.push(str); // [html]
                    str = '';
                }
            }
            console.log(array);
        }

面向对象:

 const splitStrTwo = ()=>{
            let s = 'html_javascript_css'; // [html,javascript,css]
            const array = s.split('_');
            console.log(array);
        }

        splitStrTwo();

、创建对象的方式

  • new Object()
        let People = new Object();
        People.name = '小明';
        People.age = 12;
        People.Say = function () {}
  • 字面量
    // 字面量
        let People1 = {
            name: '小明',
            age: 12,
            Say = function () {}
        }
        let People2 = {
            name: '小花',
            age: 14,
            Run = function () {}
        }
  • 工厂函数
        // 工厂函数
        function CreatePople(name,age) {
            return{
                name:name,
                age:age,
                Say:function(){}
            }
        }
        let poe1 = CreatePople('小明',13)
  • 构造函数
 // 构造函数
        function People(name, age) {
            this.name = name;
            this.age = age;
            this.Say = function () {}
        }
        let p1 =People('小明',23)

三、js的prototype_proto_constructor的三角关系

每个对象的原型(__proto__)都指向自身的构造函数(constructor)的prototype属性

先上图
  • 构造函数:用来初始化新创建的对象的函数是构造函数。

  • 原型对象:构造函数有一个prototype属性,指向实例对象的原型对象。通过同一个构造函数实例化的多个对象具有相同的原型对象。

  • 实例对象:通过构造函数的new操作创建的对象是实例对象。可以用一个构造函数构造多个实例对象

  • constructor:原型对象有一个constructor属性,指向该原型对象对应的构造函数。由于实例对象可以继承原型对象的属性,所以实例对象也拥有constructor属性,同样指向原型对象对应的构造函数。

+_proto_:实例对象有一个proto属性,指向该实例对象对应的原型对象

写一个简单例子来说明构造函数、原型对象、实例对象:

<body>
<button id="btn">点击</button>
    <div id="app"></div>
    <script>
        const btnEle = document.getElementById('btn');
        const appEle = document.getElementById('app');
        // 构造函数
        function appColor() {}
        // 原型对象
        appColor.prototype.init = function (btnEle, appEle, properValue) {
            btnEle.onclick = function () {
                for (const key in properValue) {
                    appEle.style[key] = properValue[key]
                }
            }
        }
        let properValue = {
            backgroundColor: 'red',
            height: '200px',
            width: '200px',
            borderRadius: '50%'
        }
        // 实例对象
        new appColor().init(btnEle, appEle, properValue)
     </script>
</body>
  • 使用原型的注意事项:
        //这样定义是错误的,Person.prototype丢失构造器constructor,被新添加的对象覆盖
        Person.prototype = {
            name: "小明",
            age: 12,
            study: function () {}
        }

        //正确的原型对象定义需要加上constructor--手动修改构造器的指向
        Person.prototype = {
            constructor: Person,
            name: "小明",
            age: 12,
            study: function () {}
        }

相关文章

  • js 面向对象和面向过程

    js 面向对象和面向过程

  • JS面向对象精要(二)_函数

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(三)_理解对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(四)_构造函数和原型对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(五)_继承

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • js高级 第一章

    JS面向对象编程 一、什么是面向对象思想(编程思想角度)? 现有的两种程序思想:面向过程和面向对象 1.面向过程...

  • JS面向对象

    JS面向对象入门 1、面向对象语言概念面向对象语言主要包括 类、对象、封装、多肽。2、面向对象的编程思想面向过程思...

  • JavaScript笔记(一)

    一、面向对象面向过程的区别 1、什么是js对象 js对象:属性和方法的集合,js所有数据都可以看成对象...

  • ES6中的类的总结

    js常用的编程模式有面向过程编程和面向对象编程(1)面向过程编程“面向过程”(Procedure Oriented...

  • Java程序员必修内功心法!(内功修炼第二层)

    1,Java 面向对象 1.1类和对象 1.1.1. 面向对象和面向过程的区别 1,面向过程 :面向过程性能比面向...

网友评论

      本文标题:JS面向过程和面向对象

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