`

现实中没有对象,今天在JavaScript中弄几个

阅读更多

        最近在学习网页上面的一些知识,从HTML到CSS,慢慢的就接触到了JavaScript,今天就来谈谈Javascript中的面向对象的一点知识,当是对自己这几天学到的东西的一点巩固,也谈谈一下自己的一点点淡淡的理解。

     接触过面向对象语言的人都知道,Java语言无疑是面向对象思想最好的诠释者,今天要说的Javascript,前面也带一个Java,大家可能就会把Javascript和Java联系到一起,开始的时候我也以为他们是有着很亲密的关系,我还特意百度了一下Java和Javascript的关系,才知道他们两个的区别。以下来自百度。

    “很多人看到 Java 和 JavaScript 都有“Java”四个字,就以为它们是同一样东西,其实它们是完完全全不同的两种东西。Java在客户端的运行的应用程序叫做 Java Applet,是嵌在网页中,而又有自己独立的运行窗口的小程序。Java Applet 是预先编译好的,一个 Applet 文件(.class)用 Notepad 打开阅读,根本不能理解。Java Applet 的功能很强大,可以访问 http、ftp等协议,甚至可以在电脑上种病毒(已有先例了)。相比之下,JavaScript 的能力就比较小了。JavaScript 是一种“脚本”(“Script”),它直接把代码写到 HTML 文档中,浏览器读取它们的时候才进行编译、执行,所以能查看 HTML 源文件就能查看JavaScript 源代码。JavaScript 没有独立的运行窗口,浏览器当前窗口就是它的运行窗口。

  Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动感的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。

  Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java 应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。

  Java分为三个体系JavaSE,JavaEE,JavaME”

    通过上面的解释大家可能知道了Java和Javascript的区别,他们可以说是风马牛不相及,但是他们也有相似的地方,都有“面向对象”的思想在里面,下面就来说说Javascript中的面向对象,随便弄几个对象出来。

   

   No.1:工厂模式的方法

    

/*工厂模式*/
function creatObject(name,age) {
	var obj = new Object();          //创建对象
	obj.name = name;				 //添加属性
	obj.age = age;					 
	obj.run = function() {            //添加方法
		return this.name + this.age;
		};
	return obj;			//返回对象
	};
var box1 = creatObject('TMS',100);     //生成对象
var box2 = creatObject('TNT',200);       

  

 

  No.2:使用构造函数

  

/*构造函数不用返回对象引用,不需要return语句,首字母必须大写,普通的方法名首字母小写如:function box();*/
function Box(name,age) {
	this.name = name;
	this.age = age;
	this.run = function() {
		return this.name + this.age;	
		};
	};

//实例化
var box1 = new Box('TMS',100);
var box2 = new Box('TNT',103);

 

 

  No.3:使用原型创建(JavaScript 是基于原型的语言)使用prototype关键字添加属性和方法

  这样的构造有个缺陷就是实例化的对象中的属性是一样的,而且实例化的对象的地址也是一样的,有点坑。

  

//原型方式构造,属性和方法的地址是一样的,构造方法中是不一样的
function Box(){};                 //构造函数中什么都没有
Box.prototype.name = 'TMS';       //原型属性
Box.prototype.age = '100';        //原型属性
Box.prototype.run = function() {  //原型方法
	return this.name+this.age;
	};

var box1 = new Box();
var box2 = new Box();
alert(box1.run()==box2.run());   //true;

 

 

  No.4:使用字面量的方式创建原型对象,这和第三种方法相似,个人感觉就是把所有的属   性和方法写到一起了,没什么大的变化。

  

functoin Box(){};
//使用字面量的方式创建原型对象,
Box.prototype = {
	name:'TMS';
	age:'100';
	run:function() {
		return this.name+this.age;
	};
};

var box1 = new Box();  //实例化对象

 

 

  No.5:组合模式加原型函数,保持独立性(这是最好的一种方式了)看了就知道。

  

//组合模式加原型函数,保持独立性
function Box(user,age) {			//	为保持独立性用构造方法
	this.user = user;
	this.age = age;
	this.family=['aaa','ddd','jjj'];
};

Box.prototype = {            //为保持共享用原型
	constructor:Box,       //强制指向Box
	run:function() {
		return this.age+this.user;
	}
};

var box1 = new Box('TMS','100');
var box2 = new Box('TNT','190');
box1.family.push('sss');    //实例化对象1中添加的值不会共享到实例化2中去,保持了独立性
    
//alert(box1.run());
alert(box1.family);     //打印出‘aaa,ddd,jjj,sss’
//alert(box2.run());
alert(box2.family);    //引用类型没有使用原型,所以没有共享,打印的还是'aaa,ddd,jjj'

 

 

  No.6:寄生构造函数=工厂模式(有return)+构造函数(有构造函数的传参)

 

function Box(name,age) {
	var obj = new Object();
	obj.name = name;
	obj.age = age;
	obj.run = function() {
		return this.name+this.age;
	};
	
	return obj;
}

var box1 = new Box("TMS",'100');          //实例化对象
var box2 = new Box('TNT','100');

 

 

  No.7:稳妥构造函数,里面不能用this,外面实例化对象不能用new(神一样的规定)

  

function Box(name,age) {
	var obj = new Object();
	obj.name = name;                     //没有使用‘this'关键字
	obj.age = age;
	obj.run = function() {
		return obj.name+obj.age;
	};
	return obj;
}

var box1 = Box('TMs','100');       //实例化,注意没有用到'new'关键字
var box2 = Box('TNT','130');

 

 

  

以上的7种方法就是最近学到的Javascript中面向对象的东东,方法都感觉大同小异,有过一点面向对象知识的人都能理解那些简单的代码,但是每一种方法中更深层次的东西可能我还没有理解,比如底层的调用的一些机制,还有包括内存消耗,效率等等,望大神能解释!

 

PS:好了!睡觉!晚上吃多了会长胖!

 

         

4
5
分享到:
评论
8 楼 MNTMs 2014-04-16  
hss118100 写道
MNTMs 写道
LieutenantGeneral 写道
JS是基于对象的吧。

基于对象和面向对象的区别是什么啊 

JS应该是叫基于原型的面向对象

  
7 楼 MNTMs 2014-04-16  
石中玉 写道
MNTMs 写道
石中玉 写道
var box3 = new Box('Test',30);
alert(box3.name+" "+ box3.age);
alert(box3.run());


照样可以实例化!



这就是构造函数的方法吧


你的No.7说什么实例化不能new


是不使用new关键字创建对象
6 楼 石中玉 2014-04-16  
MNTMs 写道
石中玉 写道
var box3 = new Box('Test',30);
alert(box3.name+" "+ box3.age);
alert(box3.run());


照样可以实例化!



这就是构造函数的方法吧


你的No.7说什么实例化不能new
5 楼 hss118100 2014-04-16  
MNTMs 写道
LieutenantGeneral 写道
JS是基于对象的吧。

基于对象和面向对象的区别是什么啊 

JS应该是叫基于原型的面向对象
4 楼 MNTMs 2014-04-15  
LieutenantGeneral 写道
JS是基于对象的吧。

基于对象和面向对象的区别是什么啊 
3 楼 MNTMs 2014-04-15  
石中玉 写道
var box3 = new Box('Test',30);
alert(box3.name+" "+ box3.age);
alert(box3.run());


照样可以实例化!



这就是构造函数的方法吧
2 楼 LieutenantGeneral 2014-04-15  
JS是基于对象的吧。
1 楼 石中玉 2014-04-15  
var box3 = new Box('Test',30);
alert(box3.name+" "+ box3.age);
alert(box3.run());


照样可以实例化!

相关推荐

    JavaScript对象笔记.rar

    什么是对象 简单点说,编程语言中的对象是对现实中事物的简化。例如,我们一个人就是一个对象,但是编程...在后面的JavaScript对象笔记中,记录了菜鸟在学习JavaScript对象的大多数资源,希望这些资源对你也有价值。

    javascript 经典面向对象设计

    在JavaScript中实现面向对象编程主要包括以下几个方面: - **类与对象**:JavaScript没有内置的类的概念,但在ES6中引入了`class`关键字来模拟类的行为。对象则是由类实例化出来的具体实体。 - **封装**:封装是指...

    JavaScript面向对象程序设计

    在JavaScript中,数组是一种特殊类型的对象,它可以存储多个值,这些值可以是不同类型的。创建数组主要有以下几种方式: - 空数组:`var objArray = [];` - 单元素数组:`var objArray = [2];` - 多元素数组:`var ...

    Javascript 对象

    在JavaScript中,可以通过以下几种方式定义和创建对象: 1. **字面量表示法**:最简单直观的方式,直接在代码中使用对象字面量`{}`来创建对象,如: ```javascript const person = { name: 'John Doe', age: 30 }...

    编写可维护面向对象的JavaScript代码[翻译]

    面向对象编程具有几个核心概念,包括封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism): 1. 封装是指将数据(属性)和操作数据的方法(函数或方法)捆绑在一起,形成一个独立的单元——对象。...

    Eloquent JavaScript — A Modern Introduction to Programming

    书中还提到了以下几个重要知识点: - 基本的JavaScript:涉及值、变量和控制流程。在这一部分中,学习者将会了解到如何在程序中存储和处理数据,以及如何通过控制语句来影响程序的执行路径。 - 函数:JavaScript中...

    javascript new一个对象的实质

    在这三个步骤中,涉及到了几个关键的JavaScript概念,包括函数、对象、原型以及原型链。下面是这些概念的详细解释: - 函数:在JavaScript中,函数不仅仅是代码块的封装,它们还是一种特殊类型的对象,可以被调用。...

    函数之间调用同一个对象方法

    在探讨“函数之间调用同一个对象方法”的主题时,我们首先需要理解几个核心概念:函数、对象、方法以及事件监听器。这些概念是现代编程语言,尤其是面向对象编程语言中的基石,它们共同构建了复杂软件系统的逻辑框架...

    Javascript OOP之面向对象

    在深入探讨JavaScript面向对象编程(OOP)之前,首先需要明确的是,JavaScript是一种基于对象的语言,意味着你几乎可以在任何你遇到的上下文中操作对象。然而,需要注意的是,JavaScript在最初设计时并没有包含传统...

    JavaScript_JavascriptWebGL轻量级面部跟踪库,专为增强现实网络摄像头过滤器设计的功能多人脸检测旋转张嘴

    在给定的压缩包文件中,"JavaScript_JavascriptWebGL轻量级面部跟踪库,专为增强现实网络摄像头过滤器设计的功能多人脸检测旋转张嘴" 提到了几个关键的技术点,我们将对这些技术进行详细的探讨。 1. **JavaScript ...

    JavaScript成语接龙、ball-pool小游戏.rar

    在JavaScript实现的成语接龙游戏中,通常会涉及以下几个关键知识点: 1. **DOM操作**:JavaScript通过Document Object Model(DOM)来操作网页元素,实现游戏界面的动态更新,如显示成语、提示信息和用户输入框等。...

    面向对象架构OA项目

    在“面向对象架构OA项目”中,我们通常会看到以下几个核心知识点: 1. **类与对象**:类是对象的模板,定义了对象的状态(属性)和行为(方法)。对象是类的实例,拥有类定义的属性和方法。在JavaScript中,虽然...

    JavaScript王者归来(目录)

    - 探讨了JavaScript在不同场景中的适用性,包括但不限于动态网页、游戏开发、移动应用等。 - **1.1.3 对JavaScript的一些误解** - **1.1.3.1 JavaScript和Java的关系** - 澄清了JavaScript与Java之间不存在继承...

    javascript_testing_ground-源码.rar

    学习JavaScript时,以下几个关键概念至关重要: - 变量(Variables):存储数据的地方,可以是数字、字符串、对象等。 - 函数(Functions):封装可重复使用的代码块,可以接受参数并返回结果。 - 对象(Objects)...

    javascript面向对象入门基础详细介绍

    什么是对象 简单点说,编程语言中的对象是对现实中事物的简化。例如,我们一个人就是一个对象,但是编程语言很难完全描述一个这样复杂的对象。所以我们必须做出简化,首先,将人简化成属性和行为的组合,然后仅仅...

    如何将php数组或者对象传递给javascript

    在PHP和JavaScript之间传递数据时,常常会遇到需要将PHP的数据结构,如数组或对象,转换为JavaScript可以理解...然而,为了确保应用程序的安全性和性能,开发者需要考虑上述的几个关键点,并根据实际情况做出适当调整。

    来自“菜鸟教程”JavaScript实例练习【三】

    在JavaScript的学习中,有几个核心知识点是至关重要的: 1. **变量(Variables)**:JavaScript中的变量是用来存储数据的容器。它们可以动态地改变类型,使用`var`, `let`, 或 `const` 关键字进行声明。理解变量的...

    js 面向对象

    在JavaScript中,面向对象的实现方式可以分为几种模式,最常用的包括基于原型的继承模式和基于类的继承模式。 从描述中可以了解到,《Object-Oriented JavaScript》这本书由Stoyan Stefanov撰写,出版于2008年,是...

    ASP.NET AJAX客户端访问Web Service及面向对象类型系统实例

    在“ASP.NET AJAX客户端访问Web Service及面向对象类型系统实例”中,我们将深入探讨如何利用AJAX技术在客户端与Web服务进行交互,以及如何在ASP.NET中应用面向对象的编程概念。 首先,我们要理解ASP.NET AJAX的...

Global site tag (gtag.js) - Google Analytics