学过java,c#,vb的都知道类的概念,而类具有继承、封装、多态等功能。而javascript它不是面向对象语言,它是解释性语言。
但我们同样可以使用javascript来实现继承、多态。
javascript实现类,有多种方法。
方法一:构造方法。
代码
复制代码 代码如下:
function coder(){
this.name = '小王';
this.job = '程序员';
this.coding = function ()
{
alert('我正在写代码');
}
}
var coder=new coder();
alert(coder.name);
coder.coding();
方法二:工厂方法。
代码
复制代码 代码如下:
function createCoderFactory(){
var obj=new Object();
obj.name = '小王';
obj.job = '程序员';
obj.coding = function (){
alert('我正在写代码');
};
return obj;
}
var coder = createCoderFactory();
alert(coder.name);
coder.coding();
但工厂方法和构造方法都有着一个相同的缺点,就是每创建一个实例,都会实例化该类的每个函数。
方法三:原形链。
代码
复制代码 代码如下:
function coder(){}
coder.prototype.name = '小王';
coder.prototype.job = '程序员';
coder.prototype.coding = function(){
alert('我正在写代码');
};
var coder = new coder();
alert(coder.name);
coder.coding();
注意:书上说:原型链有个缺点就是它所有属性都共享,只要一个实例改变其他的都会跟着改变。 测试如下:
复制代码 代码如下:
var coder1 = new coder();
var coder2 = new coder();
alert(coder1.name); /*显示“小王”*/
coder2.name = '老王';
alert(coder1.name); /*这个显示“小王” 如果按书上说的应该是显示"老王"*/
alert(coder2.name); /*这个显示“老王”*/
alert(coder1.name);如果按书上说的应该是显示"老王",但这里显示的是“小王”,所以书上出错了。
方法四:混合方式。
以上三种都有着各自的缺点,所以我们要加以改进。
复制代码 代码如下:
function coder(){
this.name = '小王';
this.job = '程序员';
}
coder.prototype.coding = function(){
alert('我正在写代码');
};
方法五:动态原链。
要解决前三种的缺点,还有一种方法。
代码
复制代码 代码如下:
function coder(){
this.name = '小王';
this.job = '程序员';
if (typeof(coder._init) == 'undefined'){
this.coding = function ()
{
alert('我正在写代码');
};
this._init = true;
}
}
这个方法呢,当第一次使用时,由于_init没初始化,就会执行以下的代码,实例化coding函数。以后就不会再执行,这样就只实例化函数一次。
发表评论
-
javascript中的this到底指什么?
2011-09-19 18:35 680JavaScript:this 是什么? 定义:this ... -
Javascript静态类数组与框架基本实现
2011-09-19 18:23 608先来讲讲静态类数组( ... -
JavaScript 常见对象类创建代码与优缺点分析
2011-09-19 17:32 684在Javascript中构建一个类有好几种方法: 1.Fa ... -
不错的JavaScript面向对象的简单入门介绍
2011-09-19 17:22 6991) 如何创建对象: 1. 使用constructor,例如: ... -
javascript来定义类的规范小结
2011-09-19 16:45 599javascript来定义类的规范小结使用javascript ... -
详解new function(){}和function(){}() 区别分析
2011-09-19 16:37 650情景一: var yx01 = new function() ... -
JS 面向对象的5钟写法
2011-09-19 16:23 620Java代码 复制代码 代码如下: //第1种写法 ... -
JavaScript 三种创建对象的方法
2011-09-19 15:32 592JavaScript中对象的创建有以下几种方式: (1)使 ... -
Javascript面向对象编程(三) 非构造函数的继承
2011-09-19 15:28 514这个系列的第一部分介绍了"封装",第二部分 ... -
Javascript面向对象编程(二) 构造函数的继承
2011-09-19 15:27 739这个系列的第一部分,主要介绍了如何"封装" ... -
JavaScript定义类或函数的几种方式小结
2011-09-19 10:14 557js中不论是定义类或者 ... -
Js构造函数&工厂函数
2011-09-19 09:58 1036//1,工厂函数&构造函数 //例1。 / ... -
js 实例化对像的各种写法
2011-09-19 09:48 1322/* 各种方式new实例化对象的测试比较 */ ... -
JS的构造函数
2011-09-19 09:05 8711 //构造函数 2 //使自 ... -
评论这张
2011-09-08 18:00 582JavaScript兼容性一直是Web ... -
javascript浏览器兼容的实现
2011-09-08 17:54 338javascript部分 1. document.form. ...
相关推荐
Javascript 面向对象的JavaScript进阶 Javascript技术
JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在... 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库
《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的..., 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库。
JavaScript作为一门浏览器语言的核心思想;...如何实现JavaScript中缺失的面向对象特性,如对象的私有成员与私有方法;如何应用适当的编程模式,发挥JavaScript语言特有的优势;如何应用设计模式解决常见问题等。
面向对象JavaScript开发,讲述了最新的Javascript面向对象特性,以及如何使用JavaScript进行面向对象程序开发。
从一个整体的角度来说明一下Javascript的面向对象的编程。
JavaScript面向对象精要(英文版)JavaScript面向对象精要(英文版)JavaScript面向对象精要(英文版)JavaScript面向对象精要(英文版)JavaScript面向对象精要(英文版)JavaScript面向对象精要(英文版)
Javascript ppt 面向对象 OOP
传统方式对JavaScript的应用基本上是基于过程模型的,若在JavaScript中利用面向对象的思想进行代码编写,将会使得代码具有良好的结构和逻辑性,更便于管理和...本文让读者看到JavaScript如何实现面向对象编程并提供范例
JavaScript程序设计 面向过程与面向对象 6.1.1 面向过程与面向对象 1、概念 面向过程(Procedure Oriented)也可称之为“面向记录”,是一种以过程为中心的编程思想。它注重的是具体的步骤,只有按照步骤一步一步...
NULL 博文链接:https://goyourauntie.iteye.com/blog/1179204
本文件使用JavaScript已面向对象方式封装类来演示简单工厂模式的实现代码。以实例介绍了简单功能模式的用途,简单分析了实现的要件。mhtl文件里有实例代码的全部内容和分析简述。
本人在带学生使用EXT框架时,我发现学生阅读Ext的sample代码有问题,特别是对JavaScript的面向对象编程的书写方式不熟悉,于是,写了四个sample来说明它现代JS编程的对类的定义方式、类继承的方式,以及怎样发展到...
虽然 JavaScript 是脚本语言, 但它所支持的面向对象编程也是非常强大的。虽然它没有类和实例, 但它有对象, 原型和隐式的继承。我们将会解释如何模拟继承及其超类与子类之间关系的形式。原型是理解继承概念的关键, ...