博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript面向对象编程
阅读量:4593 次
发布时间:2019-06-09

本文共 1332 字,大约阅读时间需要 4 分钟。

  作为一门基于对象的语言,JavaScript又不像一门真正的面向对象编程的语言,因为它居然没有类(class)~

JavaScript类的实现方案

  1.工厂模式

function createPerson(name, age, job) {    var o = new Object();    o.name = name;    o.age = age;    o.job = job;    o.getName = function () {        return this.name;    }    return o;//使用return返回生成的对象实例}var person = createPerson('Jack', 19, 'SoftWare Engineer');

  工厂模式是一种广为人知的设计模式,创建对象交给了一个可以接受参数的方法。

  优点:解决了多次创建对象的繁琐过程。

  缺点:无法识别对象类型,因为创建对象都是使用Object的原生构造函数来完成的。

  2.构造函数模式 

function Person(name,age,job){    this.name = name;    this.age = age;    this.job = job;    this.getName = function () {        return this.name;    }}var person1 = new Person('Jack', 19, 'SoftWare Engineer');var person2 = new Person('Liye', 23, 'Mechanical Engineer');  

  使用自定义的构造函数(与普通函数一样,只是用它来创建对象),定义对象类型(如:Person)的属性和方法。它与工厂方法区别在于:

  • 没有显式地创建对象
  • 直接将属性和方法赋值给this对象;
  • 没有return语句;

      此外,要创建Person的实例,必须使用new关键字,以Person函数为构造函数,传递参数完成对象创建;实际创建经过以下4个过程:

  1. 创建一个对象
  2. 将函数的作用域赋给新对象(因此this指向这个新对象,如:person1)
  3. 执行构造函数的代码
  4. 返回该对象

  上述由Person构造函数生成的两个对象person1与person2都是Person的实例,因此可以使用instanceof判断,并且因为所有对象都继承Object,因此person1 instanceof Object也返回真:

alert(person1 instanceof Person);//true;alert(person2 instanceof Person);//true;alert(person1 instanceof Object);//true;alert(person1.constructor === person2.constructor);//ture;

    

 

转载于:https://www.cnblogs.com/diver-blogs/p/5768851.html

你可能感兴趣的文章
JDK(java development kit java开发工具包)的安装
查看>>
POJ 3233 - Matrix Power Series(矩阵快速幂)
查看>>
J-Robot,能走、能跳舞的机器人
查看>>
linux 下c语言调用终端命令
查看>>
orale中如何获取当前月份?
查看>>
程序设计语言.
查看>>
How to find First Non-Repeated Character from String
查看>>
排列与组合定理和公式
查看>>
20. Valid Parentheses
查看>>
eval()和$.parseJSON()注意事项
查看>>
eclipse-帮助文档
查看>>
产品笔记
查看>>
MyEclipse如何调试
查看>>
Java_Set用法总结
查看>>
Codeforces Round #160 (Div. 2) D. Maxim and Restaurant(DP)
查看>>
Exchange Port
查看>>
MoonStack
查看>>
Error parsing 'file:///media/RHEL_5.5\\ x86_64\\ DVD/Server'
查看>>
oracle 01578
查看>>
在source中查看代码
查看>>