`
xuedong
  • 浏览: 297287 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript中的对象化编程

阅读更多

关于对象化编程的语句 现在我们有实力学习以下关于对象化编程,但其实属于上一章的内容了。

with 语句 为一个或一组语句指定默认对象。

用法:

with (<对象>) <语句>;

with 语句通常用来缩短特定情形下必须写的代码量。在下面的例子中,请注意 Math 的重复使用:

x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10);
y = Math.tan(14 * Math.E);

当使用 with 语句时,代码变得更短且更易读:

with (Math) {
  x = cos(3 * PI) + sin(LN10);
  y = tan(14 * E);
}

this 对象 返回“当前”对象。在不同的地方,this 代表不同的对象。如果在 JavaScript 的“主程序”中(不在任何 function 中,不在任何事件处理程序中)使用 this,它就代表 window 对象;如果在 with 语句块中使用 this,它就代表 with 所指定的对象;如果在事件处理程序中使用 this,它就代表发生事件的对象。

一个常用的 this 用法:

<script>
...
function check(formObj) {
  ...
}
...
</script>

<body ...>
...
<form ...>
...
<input type="text" ... onchange="check(this.form)">
...
</form>
...
</body>

这个用法常用于立刻检测表单输入的有效性。

自定义构造函数 我们已经知道,Array(),Image()等构造函数能让我们构造一个变量。其实我们自己也可以写自己的构造函数。自定义构造函数也是用 function。在 function 里边用 this 来定义属性。

function <构造函数名> [(<参数>)] {
  ...
  this.<属性名> = <初始值>;
  ...
}

然后,用 new 构造函数关键字来构造变量:

var <变量名> = new <构造函数名>[(<参数>)];

构造变量以后,<变量名>成为一个对象,它有它自己的属性——用 this 在 function 里设定的属性。

以下是一个从网上找到的搜集浏览器详细资料的自定义构造函数的例子:

function Is() {
  var agent = navigator.userAgent.toLowerCase();
  this.major = parseInt(navigator.appVersion);  //主版本号
  this.minor = parseFloat(navigator.appVersion);//全版本号
  this.ns = ((agent.indexOf('mozilla')!=-1) &&
             ((agent.indexOf('spoofer')==-1) && //是否 Netscape
              (agent.indexOf('compatible') == -1)));
  this.ns2 = (this.ns && (this.major == 3));    //是否 Netscape 2
  this.ns3 = (this.ns && (this.major == 3));    //是否 Netscape 3
  this.ns4b = (this.ns && (this.minor < 4.04)); //是否 Netscape 4 低版本
  this.ns4 = (this.ns && (this.major >= 4));    //是否 Netscape 4 高版本
  this.ie = (agent.indexOf("msie") != -1);      //是否 IE
  this.ie3 = (this.ie && (this.major == 2));    //是否 IE 3
  this.ie4 = (this.ie && (this.major >= 4));    //是否 IE 4
  this.op3 = (agent.indexOf("opera") != -1);    //是否 Opera 3
  this.win = (agent.indexOf("win")!=-1);        //是否 Windows 版本
  this.mac = (agent.indexOf("mac")!=-1);        //是否 Macintosh 版本
  this.unix = (agent.indexOf("x11")!=-1);       //是否 Unix 版本
}

var is = new Is();

这个构造函数非常完整的搜集了浏览器的信息。我们看到它为对象定义了很多个属性:major, minor, ns, ie, win, mac 等等。它们的意思见上面的注释。把 is 变量定义为 Is() 对象后,用 if (is.ns) 这种格式就可以很方便的知道浏览器的信息了。我们也可以从这个构造函数中看到,它也可以使用一般的 JavaScript 语句(上例中为 var 语句)。

让我们再来看一个使用参数的构造函数:

function myFriend(theName, gender, theAge, birthOn, theJob) {
  this.name = theName;
  this.isMale = (gender.toLowerCase == 'male');
  this.age = theAge;
  this.birthday = new Date(birthOn);
  this.job = theJob
}

var Stephen = new myFriend('Stephen', 'Male', 18, 'Dec 22, 1982', 'Student');

从这个构造函数我们不但看到了参数的用法,还看到了不同的属性用不同的数据型是可以的(上例五个属性分别为:字符串,布尔值,数字,日期,字符串),还看到了构造函数里也可以用构造函数来“构造”属性。如果用了足够的“保护措施”来避免无限循环,更可以用构造函数自身来构造自己的属性。

 

 

 转自:http://www.ijavascript.cn/jiaocheng/javascript-object-programme-95.html

分享到:
评论
1 楼 暗黑游侠 2012-04-23  
不错,学习了,一直不知道原来JS也有面向对象的概念

相关推荐

    javascript:对象化编程

    在探讨JavaScript中的对象化编程之前,我们先来了解下什么是对象化编程以及它在JavaScript中的具体应用。 #### 对象化编程概述 对象化编程(Object-Oriented Programming, OOP)是一种编程范式,它通过将数据与...

    Javascript面向对象编程.

    这篇博客文章可能详细讨论了如何在JavaScript中实现面向对象编程。 在JavaScript中,面向对象主要通过以下三种方式实现: 1. **构造函数(Constructor)**:构造函数是一种特殊的函数,用于创建和初始化对象。我们...

    JavaScript面向对象编程指南.pdf

    在面向对象编程中结合函数式编程可以编写出更加简洁和高效的代码。 9. ES6新特性:随着ECMAScript 6(ES6)的发布,JavaScript引入了许多新特性,如类(class)、模块(module)、箭头函数(arrow function)等,...

    JavaScript面向对象编程指南(第2版).rar

    10. 错误处理与类型检查:在面向对象编程中如何优雅地处理错误,以及进行类型检查以确保数据安全。 11. 设计模式:介绍在JavaScript中常见的一些设计模式,如单例模式、工厂模式、观察者模式等。 通过深入学习这本...

    JavaScript面向对象编程指南

    这些只是JavaScript面向对象编程的一些基本概念和技巧,实际应用中还有更深入的模式和策略,如模块化、设计模式等。理解并熟练运用这些概念,将有助于你编写出更加高效、可维护的JavaScript代码。

    JavaScript面向对象编程指南 pdf

    - JavaScript对象都有一个内置的`__proto__`属性,指向其构造函数的原型。原型是一个对象,可以包含共享的属性和方法。原型链允许对象访问其构造函数原型上的属性和方法。 - 使用`Object.prototype.isPrototypeOf...

    JavaScript面向对象编程案例

    JavaScript是一种广泛应用于Web开发的脚本语言,尤其在构建交互式网页和动态应用程序时不可或...通过阅读和实践这些案例,你可以逐步掌握如何创建、继承和操作JavaScript对象,从而成为一名更出色的JavaScript开发者。

    javaScript面向对象的编程

    面向对象编程在JavaScript中的实现方式与其他面向对象语言有所不同,但正是这些独特的特性让JavaScript成为了一种强大而灵活的编程语言。掌握JavaScript的面向对象编程不仅可以提高代码的可维护性和扩展性,还能帮助...

    javascript面向对象编程(中文).pdf

    - **现代JavaScript与面向对象编程**:现代JavaScript程序设计中融入了许多新的概念和技术,这些技术让JavaScript应用程序与以往相比有了显著的不同。面向对象编程是现代JavaScript的一个重要组成部分。 #### 二、...

    JavaScript 面向对象编程

    因此,在面向对象编程中,函数常常用来定义对象的方法。 示例代码如下: ```javascript var sayHello = function () { var hello = "Hello, I'm " + this.name + ", my email is: " + this.email + ", my website...

    JavaScript面向对象高级编程

    6. **设计模式**:设计模式是面向对象编程中解决特定问题的模板。它们可以被重复使用并具有可预测的结果。设计模式主要包括创建型模式、结构型模式和行为型模式。 #### 相关实践知识 1. **目录结构和素材管理**:...

    JavaScript面向对象的编程

    7. **类(Class)语法**:虽然JavaScript原生支持基于原型的继承,但在ES6中引入了类语法,这使得JavaScript的面向对象编程更接近传统的类式继承模型。然而,即使有了类,JavaScript的实质仍然是基于原型的。 8. **...

    《JAVASCRIPT语言精髓与编程实践》.周爱民PDF

    《JAVASCRIPT语言精髓与编程实践》是周爱民撰写的一本深入解析JavaScript编程的著作,这本书旨在帮助读者理解JavaScript的核心概念,并将其应用于实际的编程实践中。JavaScript,作为全球最广泛使用的脚本语言,是...

    JavaScript面向对象编程

    由于所有的JavaScript对象都继承自全局对象Object,因此,任何对象都可以调用其他对象的方法,这就实现了多态性。 5. 原型和原型链 在JavaScript中,对象都有一个特殊的内部属性[[Prototype]],通常通过__proto__或...

    javascript面向对象编程(中文)

    1. **对象和类的概念**:在面向对象编程中,对象是数据和操作这些数据的方法的集合。在JavaScript中,对象是由键值对组成的字面量,而类则是一个模板或蓝图,用于创建具有相似属性和方法的对象。JavaScript 1.5引入...

    javascript面向对象编程PDF

    在文档提供的代码示例中,Lecture类和Schedule类展示了如何在JavaScript中实现面向对象编程。Lecture类拥有name和teacher两个属性,以及一个display方法,用于显示课程信息。Schedule类则用于管理课程表,它通过...

Global site tag (gtag.js) - Google Analytics