基于对象 与 面向对象:
基于对象
具有封装的特性
面向对象
基于对象 并且可以继承 多态
javascript 是基于对象的,每个对象都可以有它独特的属性。但是它的每一个对象
不能被继承。
对象之间存在一种 泛化 的关系,即说明这两个对象是 一类 对象。通过类来声明,这样诞生
的很多对象都是一个类的对象。而在javascript中,有两种方式是不具有这样的 泛化 关系的。
var a = new Object();
a.age = 20;
a.gengder = 'male';
var b = {age:20, gender:'male'};
这样声明的两个对象你能说他们是一类对象吗?
function Cust(a, g)
{
this.age = age;
this.gender = gender;
}
var cust1 = new Cust(20, 'male');
var cust2 = new Cust(22, 'famale');
这样的呢?
在 java c++ 等的面向对象的语言中,都是先有类的声明,后才能有类的对象。
继承 封装 多态 都是在类的声明的基础上进行的改进,所以说面向对象的特性是
基于对象 且 可以继承 实现多态的。
封装 与 闭包
所谓封装,就是指一个类的 属性 或 方法 可以被声明为 共有或私有的,只有共有的
方法和属性才能被外部环境访问。
javascript 函数的对象特征:对象的属性和方法都是共有的 。
javascript 的另一个特征 闭包 就完成了属性和方法的私有化,使得javascript
丝毫不逊色于面向对象的各大语言。
闭包就是利用变量的作用域来控制对象中属性的访问权限。
function Student(name, age)
{
this.name = name;
this.age = age;
var addr = "Address infomation";
}
var stu = new Student("xiaoming", 20);
// 对于外部环境来说,addr 变量是不可访问的。
alert(stu.name + ":" + stu.age); // xiaoming:20
alert(stu.addr); // undefined
我们通过这样的方式来将不公开的属性做以 "封装",就叫做闭包。
在包内,我们声明对象的属性,在包外没有 this 指向的属性都不能被访问。
对象的 getter 和 setter 属性
在java当中,我们通常会给一个私有的属性提供 getter 和 setter 方法来供外部
访问。在javascript当中也一样具有这样的方法,而且javascript当中的getter
还有一种表现形式,它可以表现成为对象的一个属性。
getter 方法模板://先看例子
注意:
getter 属性中不能访问 prototype 类型的属性
getter 方法 可以
this.property =
{
valueOf : function(){return ...},
toString : function(){return ...}
}
例子:
function Student1(name, age, gender)
{
this.name = name;
this.age = age;
this.gender = gender;
// getter 方法的形式获得信息
this.getInfo = function ()
{
return "Hello ! My name is " + name
+ "\n I am " + age + " years old !"
+ "\nI'a " + gender;
}
}
function Student2(name, age, gender)
{
this.name = name;
this.age = age;
this.gender = gender;
//定义成属性 模拟getter方法 来获取信息
this.info =
{
valueOf:function()
{
return "Hello ! My name is " + name
+ "\n I am " + age + " years old !"
+ "\nI'a " + gender;
},
toString:function()
{
return "Hello ! My name is " + name
+ "\n I am " + age + " years old !"
+ "\nI'a " + gender;
}
}
}
var stu1 = new Student1("xiaoming", 22, "male");
var stu2 = new Student2("xiaofang", 21, "famale");
alert(stu1.getInfo()); // getter 方法
alert(stu2.info); // 对象的 getter 属性
对象的setter属性目前只能由 setXxx 方法来实现,目前的 ECMA Script V3 不支持
setter 属性。
分享到:
相关推荐
二、高级JavaScript特性 1. ECMAScript 5及更新版本:书中涵盖了ECMAScript 5引入的新特性,如Array和Object的方法增强、严格模式等。 2. 面向对象编程:介绍类、构造函数、原型对象等,以及ES6引入的类语法和模块...
本书共分四个部分,第1部分帮助读者快速入手,掌握基本的JavaScript编程要点;第2部分介绍JavaScript的发展和技术背景;第3部分深入探索JavaScript,介绍了语法、值、运算符、布尔类型、数字、字符串、语句、异常...
JavaScript ES6新增特性
1. **基础语法**:讲解了变量、数据类型、运算符、流程控制(如条件语句、循环)、函数等基本元素,帮助初学者建立JavaScript编程的基本框架。 2. **对象和原型**:深入探讨了JavaScript的面向对象特性,包括对象...
自ES6开始,JavaScript引入了许多新特性,如let和const声明、箭头函数、模板字符串、类和模块等,这些特性极大地丰富了JavaScript的语法,使其更加现代化和高效。 ### 实战案例分析 《JavaScript语言精粹》还提供了...
javascript-idiosyncrasies, 对初学者的一组Javascript特性 JavaScript特性这是一个 Collection 中的事物,可以能无法被识别,espcially是初学者。免责声明:其中一些代码Fragment只是演示了 JavaScript 奇怪的部分...
虽然它不支持最新的JavaScript特性,但在许多旧项目或对新特性需求不高的场合,Rhino仍然是一个可靠的工具。理解并熟练使用Rhino,可以帮助开发者更好地融合JavaScript和Java,实现更灵活、高效的编程。
在JavaScript中,对象是语言的核心组成部分,它们由一组属性组成,每个属性都有其特定的特性。本文将深入探讨JavaScript对象和属性的特性,包括`[[Prototype]]`、`[[Class]]`、`get`和`set`访问器、以及如何通过`...
最后,JavaScript的ES6及后续版本引入了许多新特性,如箭头函数、模板字符串、解构赋值、类和模块等。掌握这些新特性,能够让你的代码更现代,更符合最佳实践。 总的来说,《JavaScript语言精粹》涵盖了JavaScript...
1. **函数**:函数是JavaScript中的基本构建块,用于封装可重复使用的代码段。书中深入探讨了函数的创建、调用和作用域,包括匿名函数、函数表达式和立即执行函数表达式(IIFE)。 2. **对象**:JavaScript的面向对象...
这份资料详细阐述了JavaScript的各个方面,包括语法特性、执行机制、内存管理以及优化技巧,旨在帮助读者深入理解这门广泛应用于Web开发的语言。 一、JavaScript简介 JavaScript,最初由Brendan Eich在1995年创建,...
JavaScript 语言的特性和应用 JavaScript 是一种基于对象的脚本语言,主要应用于 Web 页面的开发中。它可以与 HTML、Java Applet 等技术一起实现多个对象的链接和动态交互。JavaScript 具有以下特性: 1. 基于对象...
“javascript5.5.chm”可能指的是JavaScript 5.5版本的相关文档,这个版本包含了ECMAScript 5的一些特性。ECMAScript是JavaScript的标准,5.5可能是对5.1或5.0的一个小更新。这个文档可能会详细介绍新增的语法特性,...
1. **变量和数据类型**:JavaScript的动态类型系统允许你在同一变量上存储不同类型的值。例如,你可以声明一个变量并赋予字符串、数字或对象值。 2. **作用域和闭包**:理解变量的作用域至关重要,它决定了变量在...
再者,"javascript5.chm"可能是关于JavaScript 5.0版本的文档,这个版本在ECMAScript 5中得到标准化,引入了许多重要的新特性,如对象字面量、函数表达式、数组和对象的方法等。通过这个文档,学习者可以深入理解这...
16. **浏览器兼容性**:理解不同浏览器对JavaScript特性的支持程度,以及如何使用polyfill或Babel进行兼容性处理。 17. **调试技巧**:学会使用开发者工具进行代码调试,包括断点、步进执行、查看变量值等。 18. *...
JavaScript 语言的特性和应用 JavaScript 是一种基于对象的脚本语言,通过嵌入或整合在标准 HTML 语言中实现的。JavaScript 具有以下特性: 1. 基于对象的脚本语言:JavaScript 是一种基于对象的脚本语言,面向...
"JavaScript面向对象特性浅析与范例" JavaScript是一种基于原型的解释型语言,它允许在任意时刻给一个对象添加任意多的属性和方法。 JavaScript的面向对象特性是指它可以实现面向对象编程的部分特性,而不是完全...
手册可能涵盖了语言的基础语法、核心概念以及高级特性,旨在帮助读者有效地学习和应用JavaScript。 JavaScript的基础知识包括变量、数据类型、运算符、流程控制(如条件语句和循环)、函数、对象和数组等。变量是...