`
anson_xu
  • 浏览: 514697 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类

面向对象的JavaScript (一、对象基础,使用函数来模拟类)

阅读更多
function Person(name, age) {
 2
 3  //私有变量(private variables)
 4  var myName = name;
 5  var myAge = age;
 6
 7  //公共属性(public properties)
 8  this.name = myName;
 9  this.age = myAge;
10  
11  //私有函数(private functions)
12  function getMyName() {
13  return myName;
14  };
15  
16  function getName() {
17  return name;
18  };
19  
20  var getMyAge = function () {
21  return myAge;
22  };
23  
24  var getAge = function () {
25  return age;
26  };
27  
28  //特权方法(privileged methods)
29  this.getName = function () {
30  return this.name;
31    //return myName;    可以访问私有变量
32  //return name;     可以访问构造函数参数(其参数本质也是私有变量)
33  //return getMyName(); 可以访问私有函数
34  //return getName();  可以访问私有函数
35  };
36  
37  this.getAge = function () {   
38  return getAge(); 
39  };
40  
41  this.getRealAge = function () {
42  return this.age;
43  };
44}
45
46//公共方法(public methods)
47Person.prototype.acceptName = function (param) {
48  this.name = param;
49  //name = param;    公共方法不能访问私有变量
50  //myName = param;   公共方法不能访问私有变量
51};
52
53//原型属性(prototype properties)
54Person.prototype.legs = 2;
55
56//静态属性(static properties)
57//整个类只有一个静态属性,各个对象共享同一个静态属性值
58Person.arms = 2;
59
60Person.getArms = function () {
61  return Person.arms;
62  //return this.arms;  可以使用this来指代Person对象本身
63};
64
65/**//*
66Person是一个逻辑上的类,他的本质是一个Function,在JavaScript中类是由Function来模拟的,所以Person还是一个Function的实例。而arms和getArms方法是一个Function对象实例上的属性和方法,是Person对象所特有的,所以本例可以使用Person.arms来引用,同时在getArms方法中,可以使用this.arms来引用,因为getArms是Person对象上的方法,在该方法内部this指代Person对象自身。
67*/
68alert(Person.getArms());
69
70var pa = new Person("Teddy", 25);
71
72//alert(pa.myName); 不能访问私有变量
73
74alert(pa.name);
75
76alert(pa.getAge());
77
78pa.acceptName("Born");
79
80alert(pa.getName());
81
82var pb = new Person("John", 18);
83
84//运行时动态加入方法
85Person.prototype.acceptAge = function (param) {
86  this.age = param;
87};
88
89//pb对象也可以调用动态添加的方法
90pb.acceptAge(30);
91
92alert(pb.getAge());
93
94alert(pb.getRealAge());
95
96//运行时覆盖已定义方法
97Person.prototype.acceptName = function (param) {
98  return param;
99};
100
101//所有已创建对象都自动继承被覆盖的方法
102alert(pa.acceptName("Black"));
103
104alert(pa.getName());
105
106alert(pa.legs);
107
108//运行时改变原型属性值
109Person.prototype.legs = 4;
110
111//所有已创建对象都自动继承被改变的原型属性值
112alert(pb.legs);
113
114//运行时将原型属性改为公共方法
115Person.prototype.legs = function () {
116  return 4;
117};
118
119//所有已创建对象都自动继承原型属性到公共方法的改变
120alert(pa.legs());
分享到:
评论

相关推荐

    Javascript 面向对象的JavaScript进阶

    通常,开发者会使用闭包或者ES6的类来模拟封装。 **示例代码:** ```javascript function Person(name, age) { let _age = age; // 私有变量 this.getName = function() { return name; }; this.setAge = ...

    Javascript面向对象基础.rar

    JavaScript中的类是通过构造函数来模拟的,它们用于创建具有特定属性和方法的对象。构造函数可以通过`new`关键字实例化: ```javascript function Person(name) { this.name = name; } let person1 = new ...

    Javascript面向对象基础

    下面我们将详细探讨JavaScript面向对象的基础知识。 1. **对象和数据类型**: 在JavaScript中,一切都是对象,包括基本数据类型(如字符串、数字、布尔值)。然而,与数字或字符串不同,对象是键值对的集合,可以...

    javascript 经典面向对象设计

    面向对象编程是一种软件开发方法,它通过模拟现实世界中的对象来组织代码结构。在JavaScript中实现面向对象编程主要包括以下几个方面: - **类与对象**:JavaScript没有内置的类的概念,但在ES6中引入了`class`...

    Javascript面向对象编程

    利用`function`作为类的定义、`new`操作符创建对象、以及`this`和`prototype`来模拟类的特性和行为,可以有效地提高代码的可读性和可维护性。通过深入理解这些概念,开发者可以更好地利用JavaScript的强大功能来构建...

    JavaScript 面向对象编程详细讲解文档

    JavaScript是一种动态类型的脚本语言,虽然它不像Java或C#那样拥有传统的类和实例机制,但它的面向对象编程能力仍然非常强大。JavaScript的核心在于对象、原型和隐式继承,这些都是理解其面向对象特性的重要概念。 ...

    JavaScript面向对象的支持

    JavaScript是一种广泛应用于Web开发的脚本语言,它虽然支持面向对象编程,但其面向对象的实现方式与其他传统面向对象语言(如Java或C++)有所不同。JavaScript中的面向对象特性主要体现在以下几个方面: 1. **基于...

    JavaScript面向对象编程指南

    在没有类的情况下,JavaScript使用原型式继承模拟面向对象概念。`Object.create`函数可以创建一个新的对象,该对象的原型是传入的第一个参数。 5. **构造函数、实例和`this`关键字** `this`在JavaScript中表示...

    javascript面向对象编程pdf

    面向对象编程(OOP)是编程范式的一种,它使用对象来表示数据和方法,强调将数据封装在对象内部。面向对象的JavaScript是本书的核心议题,它探讨了JavaScript中的OOP原理以及在现代JavaScript编程中的应用。 书中...

    JavaScript中支持面向对象的基础

    总的来说,JavaScript的面向对象基础包括构造函数创建类、`new`操作符实例化对象、使用点操作符或方括号操作符访问对象的属性和方法,以及通过原型链实现继承。这些特性使得JavaScript能够支持丰富的面向对象编程...

    javascript面向对象技术基础

    面向对象编程(Object-Oriented Programming,OOP)允许开发者通过模拟现实世界中的对象来创建复杂的软件系统。JavaScript,作为一种动态、弱类型的语言,虽然其面向对象的特性与传统的C++或Java有所不同,但同样...

    JavaScript面向对象编程案例

    在JavaScript中,面向对象编程并不是原生支持的,但它可以通过模拟类和对象来实现。 JavaScript的面向对象主要基于以下三个核心概念: 1. **对象**:对象是JavaScript中的基本单位,它们由属性(key-value对)和...

    javascript面向对象特性代码实例

    类在面向对象编程中扮演着基础的角色,它是构造对象的模板或蓝图。在JavaScript中,类可以通过函数和原型链来实现。文章中给出了两种基本的类的使用方法。第一种方法使用构造函数来创建对象并定义成员函数。第二种...

    面向对象javascript笔记

    面向对象的JavaScript编程是JavaScript开发中的重要概念,它允许我们以类和对象的...以上就是对"面向对象javascript笔记"所涵盖知识点的详细解析。理解并掌握这些概念对于深入理解和高效地编写JavaScript代码至关重要。

    [推荐]javascript 面向对象技术基础教程

    本文将深入浅出地讲解JavaScript中的面向对象技术基础,包括对象、数组、函数、类、构造函数以及原型等方面的知识。 首先,让我们来看看对象和数组。在JavaScript中,对象是键值对的集合,这些键通常是字符串,对应...

    javascript 面向对象技术基础教程第1/2页

    JavaScript面向对象技术是该编程语言非常核心的一个部分,它允许开发者使用对象来组织代码,并模拟现实世界中的实体。在JavaScript中,几乎所有的东西都可以被视为对象,包括基本数据类型如数字和字符串。对象包含...

    JavaScript面向对象编程

    JavaScript中的类是从ES6开始引入的,但在此之前,我们通常使用构造函数和原型链来模拟类的概念。类定义了对象的状态(属性)和行为(方法)。对象则是类的实例,它们拥有类定义的属性和方法。 2. 封装 封装是面向...

    老生常谈javascript的面向对象思想

    面向对象编程(OOP)是通过创建对象来模拟现实世界的一种编程范式。在JavaScript中,对象可以通过不同的方法创建和定义。面向对象有三大基本特性:封装、继承和多态。 封装是面向对象编程的核心思想之一,它指的是...

Global site tag (gtag.js) - Google Analytics