关键字: 面向对象的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());
分享到:
相关推荐
在提供的资源中,《代码之美》PDF文件可能包含了关于编程实践和代码风格的指导,而《Javascript面向对象编程》PPT可能更具体地阐述了JavaScript OOP的细节和示例。学习这些材料将有助于深入理解JavaScript的面向对象...
JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在... 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库
《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码...
JavaScript是一种广泛...通过深入学习这本《JavaScript面向对象编程指南(第2版)》,开发者不仅能掌握JavaScript的面向对象编程基础,还能了解到实际项目中如何有效地运用这些知识,提升编程技巧和解决问题的能力。
### JavaScript面向对象编程精要 #### 一、引言 JavaScript是一种灵活且强大的脚本语言,它虽然起源于一种简单的浏览器脚本语言,但随着时间的发展,JavaScript已经成为了一种功能全面的编程语言,尤其是在Web开发...
总而言之,学习现代JavaScript面向对象编程,有助于开发者在认识这门语言演化的基础上,运用面向对象的设计和编程模式来构建更加健壮和可维护的JavaScript应用程序。同时,测试和调试是保证代码质量不可或缺的环节,...
### JavaScript面向对象精要 #### 一、概述 《JavaScript面向对象精要》是一本深入讲解JavaScript面向对象编程原理的专业书籍。本书由知名的前端开发者Nicholas C. Zakas撰写,全面介绍了JavaScript作为一种动态...
### JavaScript面向对象编程详解 #### 一、引言 JavaScript作为一种广泛使用的脚本语言,在Web开发领域占据着举足轻重的地位。尽管JavaScript本质上是一种基于原型的语言,但它也支持面向对象编程的一些特性,使得...
下面将详细探讨JavaScript面向对象编程的基本原理、特性以及实际应用。 1. **类与对象** - 在JavaScript中,对象是键值对的集合,可以通过字面量语法或构造函数创建。例如: ```javascript const person = { ...
javascript面向对象编程指南 2nd英文版,英文名:Object-Oriented JavaScript。 What you will learn from this book The basics of object-oriented programming, and how to apply it in the JavaScript ...
### JavaScript面向对象编程知识点概述 #### 一、现代JavaScript编程概览 - **JavaScript的演进**:自诞生以来,JavaScript经历了从一个简单的脚本语言到现今被广泛应用于构建复杂应用的强大编程语言的过程。它的...
JavaScript面向对象编程指南是完整的扫描版...
JavaScript面向对象编程.pdf