美文网首页
js 面向对象模式

js 面向对象模式

作者: sunflower_07 | 来源:发表于2019-03-02 22:17 被阅读0次
  1. 面向对象:
    就是将一个需求抽象成一个对象,然后针对对象分析特征(属性)与动作(方法)。

  2. 面向对象的特征:
    封装
    多态
    继承

  3. 创建面向对象的几种模式:(工厂模式、构造模式、原型模式、混合模式[原型模式+构造模式])
    一、工厂模式

    function test(name,sex){
    var o = new Object();
    o.name = name;
    o.sex = sex;
    o.say = function(){
    console.log(this.name);
    }
    return o;
    } 
    
工厂模式.png

;

二、构造模式

  function Ba (name){
    this.name = name;
    this.say = function(){
    console.log(this.name);
    }
}
var  b  = new Ba('huhu');
构造函数

注意:构造和工厂模式的相识点:解决创建多个相似对象的问题。
构造和工厂模式的区别:
1. 构造函数首字母需要大写;
2. 直接将属性和方法赋值给this 对象;
3. 没有 return 语句;
4. 使用new 创建对象
5. 可以识别属于哪个对象
构造函数缺点:
使用构造函数最大的问题就是,每次创建实例的时候都要重新创建一次方法 (say()) [ 实际上每次创建对象的时候,对象的属性均不相同,而对象的方法是相同的,所以创建两次完全相同的方法是没必要的,所有我们可以函数移到对象的外面]
放到对象的外面代码:

function a (name){
    this.name = name;
    this.say = say;
}
var say = function(){
    console.log(this.name);
    }
undefined
var q = new a('小胡')
构造函数2

;

这样的写法是把 say 写成全局函数了,显然失去了面向对象封装性了,所以可以通过原型来解决此问题。

三、原型模式
创建的每一个函数都有prototype(原型)属性,而这个对象的用途是包含特定类型的所有实例共享的属性和方法。使用原型对象的好处,就是可以让所有对象实例共享它所包含的属性和方法。

function Test (){}
Test.prototype.name = 'huhu';
Test.prototype.age = '12';
Test.prototype.say = function(){
  alert(this.name+'年龄'+this.age);
}

ƒ (){
  alert(this.name+'年龄'+this.age);
}
var a = new Test();
原型.png

缺点:重新给属性赋值的时候,也会直接修改原型上面的值,共享也是好处,也同样是缺点了。

四、 混合模式(原型模式+构造模式)

`````

function Test(name,age){
this.name = name;
this.age = age;
}
Test.prototype.say = function(){
console.log(this.name+':'+this.age);
}
var a1 = new Test('小明',20);
var a2 = new Test('小王',40);
console.log(a1.say());
console.log(a1.name);
console.log(a1.age);
console.log(a2.say());
console.log(a2.name);
console.log(a2.age);

![混合模式](https://img.haomeiwen.com/i6286160/20fa4f2757bec4e0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
混合模式中构造函数定义实例属性,原型模式定义方法和共享属性。每个实例都有自己的一份实例属性,同时又共享方法,最大的节省了内存。

相关文章

  • 2018-01-18

    js中的面向对象核心 js是基于对象的编程语言,在后面的学习中我们通过一种模式使其转化成为面向对象的语言。js面向...

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

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

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

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

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

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

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

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

  • js 面向对象模式

    面向对象:就是将一个需求抽象成一个对象,然后针对对象分析特征(属性)与动作(方法)。 面向对象的特征:封装多态继承...

  • ES6中的类的总结

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

  • js面向对象设计模式

    1、工厂模式 2、构造函数模式 3、原型模式 4、组合使用构造函数模式和原型模式 5、动态原型模式 6、寄生构造函...

  • js面向对象

    js面向对象 方法一:工厂模式 所谓工厂模式,简单点儿说就是按照工厂生产的过程创建对象,原材料->加工->返还产品...

  • js 面向对象和面向过程

    js 面向对象和面向过程

网友评论

      本文标题:js 面向对象模式

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