美文网首页
JavaScript面向对象编程思想及对象的创建

JavaScript面向对象编程思想及对象的创建

作者: 1CC4 | 来源:发表于2020-03-30 18:23 被阅读0次

一、什么是面向对象?

找解决问题对象,如果对象存在,调用对象相关功能方法解决问题,如果对象不存在,自己封对象实现功能。

 //纯javascript代码实现,还是函数实现
        //1 .纯javascript代码实现
        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);
        }

        //2. 纯函数方式实现
        const splitStrTwo = ()=>{
            let s = 'html_javascript_css'; // [html,javascript,css]
            const array = s.split('_');
            console.log(array);
        }

        splitStrTwo();

如上代码块:
解决问题的过程:面向过程
使用对象解决问题:面向对象

二、创建对象的方式

1、new Object()

let person = new Object();
person.name  = "小明";
person.age = 18;
person.sayName = function(){}

2、字面量

let person = {
  name:"小明",
  age:"18",
  sayName = function(){}
}

3、工厂函数

用函数来封装创建对象的细节,在函数里面创建对象并返回对象,就有些像工厂里的流水线一样。

function Person(name,age){
  return {
    name:name,
    age:age;
    sayName: function0{}
}

缺点:对象识别问题,它不知道一个对象的类型。

4、构造函数

是一种特殊的函数,函数名就是类型名,函数体定义类的属性和方法,通过给构造函数传递不同的参数,然后调用构造函数来创建不同对象。

可以将它的实例标识为一种特定的类型,这正是构造函数模式胜过工厂模式的地方。
比如(instanceof用于检测对象类型)

let person1 = new Person("小明",29);
person1 instanceof Person  //true 
function Person(name,age){
  this.name = name;
  this.age = age;
  this.sayName = function(){}
}
//使用构造函数创建实例对象
let p1 = new Person("小明","18")

缺点:每个方法都要在每个实例对象上重新创建一遍,即使是同名方法或者两个方法的作用一样,而不同实例对象上的同名方法其实是不一样的,这样就造成了一种冗余。

构造函数示例:

<body>
    <div id="app">
        构造函数点击
    </div>
</body>
 //用面向对象方式实现 ,点击按钮改变区块颜色
    const element = document.getElementById('app')
    function ChangeColor(color) {
        this.backgroundColor = color;
        this.init = function () {
            element.onclick = function () {
                element.style.background = color
            }
        }
    }
  //创建实例对象p1
    let p1 = new ChangeColor('red');
    p1.init();

5、原型模式

每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。

function Person(name,age){
  this.name=name;
  this.age=age;
}
Person.prototype.sayName = function(){
        alert(this.name);
};
let person1 = new Person("小明",18);
let person2 = new Person("小张",18);
//结果:小明  小张
//使用原型模式使实例的对象都能使用,不用去重复实例对象的方法

所有的属性和方法都是大家(所有实例)共享的了,person1和person2访问的sayName和name等 都是同一个方法

重写原型的时候,切断了现有原型与任何之前已存在的对象实例之间的联系,它们引用的仍是最初的原型。可以通过在重写原型里添加constructor:Person来建立新联系。

三、对象存储

变量:在内存开辟存储空间变量名指向内存地址(栈)(内存中的存储单元)

对象:内存堆区域开辟的空间(大小取决于对象的大小,方法多少)

实例对象:栈区域的变量指向堆区域所在的对象地址(从头到尾)

数据存储结构

相关文章

  • JavaScript面向对象编程思想及对象的创建

    一、什么是面向对象? 找解决问题对象,如果对象存在,调用对象相关功能方法解决问题,如果对象不存在,自己封对象实现功...

  • JavaScript学习笔记(一)

    Javascript面向对象 1. 面向对象编程介绍 1.1 两大编程思想 面向过程 & 面向对象 1.2 面向过...

  • 笔记:JavaScript继承

    本文摘录及参考自:1. Javascript继承机制的设计思想2. Javascript 面向对象编程(一):封装...

  • 【python】面向对象

    面向对象编程面向对象的设计思想是抽象出Class,根据Class(类)创建Instance(实例)。面向对象的程序...

  • 构造函数与 new 命令

    JavaScript 语言具有很强的面向对象编程能力,本章介绍 JavaScript 如何进行面向对象编程。 对象...

  • JavaScript 面向对象编程

    JavaScript 快速入门 面向对象编程创建对象构造函数忘记写new怎么办?原型继承class继承 面向对象编...

  • 全面理解面向对象

    1.从编程思想理解面向对象 面向对象编程思想关注的时解决问题所以得对象,先创建对象,然后调用对象下的属性和方法来解...

  • JavaScript 面向对象编程-创建对象

    一、介绍对象 对象是什么? 一切皆对象(Everything is object) 这句话乍一听似乎有些抽象,可以...

  • JavaScript 中的面向对象与原型

    layout: posttitle: JavaScript 中的面向对象和原型tag: 编程语言 创建一个对象,新...

  • JS创建对象方案(一)

    5.1 JavaScript的面向对象 JavaScript其实支持多种编程范式的,包括函数式编程和面向对象编程:...

网友评论

      本文标题:JavaScript面向对象编程思想及对象的创建

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