`
wangyalei
  • 浏览: 51785 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

js面向对象(一)

    博客分类:
  • AJAX
阅读更多

类是对现实世界中具有相似属性和行为的一类对象的抽象,它体现了面向对象方法论中封装的概念。JavaScript语言中并没有与门定义类的关键字在JavaScript中,一个函数就是一个类,函数名即是类名,方法体的定义可以看做构造函数

function classname(){
    //这里编写类成员的定义
}

 私有成员的定义不其作用域相关,只要不能被外界直接访问,都可以认为是私有成员。

function Person(){
	//定义Person类
	var name = null; //带有var 的是 私有成员 在对象外无法访问 
	var age = null;  //建议无论声明成全局还是局部的最好都加上var
	function setName(pName)
	{
	//设置姓名
	 name = pName;
	}
	function getAge()
	{
	//取得年龄
	return age
	}
}

   公有成员即直接对外公开的属性和方法。
在JavaScript中,使用this关键字是创建公有成员的常用方法。
与强类型语言中的this关键字类似,JavaScript中的this也可以代表某个类在运行时刻的实例。

 

function Person(){
   //定义Person类
    var name = null;
	var age = "20岁";
	this.height = 178.5; 
	//在JavaScript中,可以使用变量保存函数的引用。如果将一个函数引用赋值给公有变量,
	//那么该函数就可以被外界直接调用
	this.setName = function(pName){
	 name = pName;
    };
   this.getAge = function(){
   return age;
   };
}

   强类型语言中使用static关键字定义静态成员,JavaScript中并未提供类似的关键字。
在JavaScript中,为类型直接添加属性成员,该属性成员可以通过“类型.属性”直接访问

 

Person.info = "这是一个Person类";//为Person类添加静态变量
Person.getInstance = function(){//为Person类添加静态方法
return new Person();
}

   JavaScript中的对象是由函数创建的,用来创建对象的函数也称为构造函数或者类型。
JavaScript中的内置类型Object、Array、Date、Math、RegExp、Function、Error
Object是JavaScript中的原始对象类型,其他所有的JavaScript对象都继承自Object

   使用new关键字创建类型对象

 

var now = new Date();//创建了一个Date类的对象
var o = new Object();//创建了一个Object类的对象
var p = new Person();

   1. 当解释器遇到new操作符时首先创建一个新的空对象;
2. 执行Person类型的构造函数,并将其中的this指针都指向该新对象;
3. 如果构造函数中包含不存在的属性,解释器就创建该属性。所以函数的执行实际就是初始化新对象的过程,也就实现 了构造函数的作用;
4. 当函数执行完毕后,new操作符将返回初始化后的对象。

 

  引用对象的属性和方法

对象名.属性(方法)名
对象名["属性(方法)名"]

 使用“.”访问对象成员

var p = new Person();alert(p.height);
p.setName("Jason”);
alert(p.getName());

 使用“[ ]”访问对象成员

var arr = new Array();
arr["push”](1);
alert(arr["length"]);

   动态添加、修改和删除对象的属性和方法
JavaScript语言可以动态的修改(新增、更新或删除)对象的属性或方法

 

var user = new Object()//基于Object原型创建user对象
user.name = "fox”;//为user对象动态添加name属性
user.getName = function(){//为user对象动态添加getName方法
	return this.name;
};
user.name = "jason”;//动态修改name的属性值
user.getName = function(){//动态修改getName方法的定义
	return "I’m " + this.name;
};
user.name = undefined;//删除user对象的name属性
user.getName = undefine;//删除user对象的getName方法

   创建无类型对象(Object Literal)
对象字面量(Object Literal)就是一种帮助我们构建临时对象的无类型对象

“{}”把一系列“属性名:属性定义”括起来定义一个对象,多个属性之间用逗号分隔ment1,
{
  property1:state
  property2:statement2,
  ...,
  propertyN:statementN
}

 Object Literal既可以定义简单对象,也可以定义复杂对象

var obj = {};//定义一个空对象
var user = {//定义了一个user对象
	name:"fox",age:20,sex:"femal",
	sayHello:function(){
	alert("Hello! I’m " + this.name + "!");
      },
	favoriteColor:["red","pink"]
};
for(var i in user.favoriteColor){
	alert(user.favoriteColor[i]);
}
user["sayHello"]();"]();

 以上就是简单的对js面向对象的简单介绍,一下是个简单的例子

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>面向对象</title>
<script language="javascript">
function one(){
/*第一种构造方法*/
var a = new Object();
a.x = 1; a.y = 2;
alert();
/*第二中构造方法*/
var b = {x:1,y:2};  //带有var 的是 私有成员 在对象外无法访问 
alert(b.x);
alert(b.y);

// 声明一个共有的属性
this.lenght ={

 valueOf:function(){
	
	}

 }

}

/*第三中构造方法*/
function two(x,y){
  
  this.x = x; //共有属性 可以通过"."的形式进行访问
  this.y = y;
}

//对象的实例
function Instatnce(){
	 
 var t = new two(1,2);
 alert(t.x);
 alert(t.y);
}

//对象的共有和私有
function List(){
  
	var m_elements = [];
	m_elements = Array.apply(m_elements,arguments);
	this.length = {
		
		   valueOf:function(){
			  
				return m_elements.length;
			   
			  },
			 
			toString:function(){
				
				 return m_elements.length;
				
				}
		}
		
this.toString = function(){
		
		return m_elements.toString();
		
		}
	this.add = function(){
		
		return m_elements.push.apply(m_elements,arguments);
		
		}
}


	 //测试共有 私有
	 function test(){
		 var list = new List(1,2,3);
		 alert(list);
		 alert(list.length);
		 list.push(4,5,6);
		 alert(list.toString());
                                 alert(list.add());		
		 alert(list);
		 
		 }
 </script>
</head>

<body>
 <input  type="button" onclick="Instatnce()"  value="面向对象"  />
 <input type="button" onclick="test()" value="共有私有" />
</body>
</html>
分享到:
评论

相关推荐

    quartus ii安装教程.docx

    quartus ii安装教程

    tensorflow_probability-0.3.0-py2.py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    tensorflow_privacy-0.5.1-py3-none-any.whl

    算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    tensorflow_recommenders-0.7.3-py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    asp代码ASP基于WEB实验室设备管理系统设计(源代码+论文)

    asp代码ASP基于WEB实验室设备管理系统设计(源代码+论文)本资源系百度网盘分享地址

    JAVA毕业设计之springboot057洗衣店订单管理系统(springboot+mysql)完整源码.zip

    这个资源是一个基于Spring Boot和MySQL的洗衣店订单管理系统的完整源码。它包括了所有的源代码文件,以及一个详细的文档,可以帮助你理解和运行这个系统。这个系统的主要功能包括:用户注册和登录,下单,查看订单,修改订单,删除订单等。用户可以在系统中选择洗衣服务,然后提交订单。系统会自动计算订单的总价,并将其显示在用户的订单列表中。用户还可以查看自己的历史订单,以及每个订单的详细信息。此外,系统还包括了一个管理员模块。管理员可以查看所有的订单,以及对订单进行管理。他们可以修改订单的状态,例如将订单标记为已完成,或者取消订单。这个系统使用了Spring Boot框架,这是一个非常流行的Java开发框架,它可以帮助你快速地开发和部署应用程序。同时,系统也使用了MySQL数据库,这是一个广泛使用的关系型数据库,它可以存储大量的数据,并提供高效的查询功能。总的来说,这个资源是一个非常完整的洗衣店订单管理系统的源码,它可以帮助你理解如何使用Spring Boot和MySQL来开发一个实际的应用程序。无论你是正在学习Java编程,还是已经有一定的开发经验,都可以从这个资源中学到很多有用的知识和技能。

    网络药理学、代谢组学的应用

    网络药理学、代谢组学的应用和课题设计方案”基于PI3K-AKT-mTOR通路研究 淫羊藿苷影响成骨细胞糖酵解促进骨形成的机制“

    毕业论文知识图谱构建平台的python后端。模型相关在这个模块完成,深度学习基于pytorch.zip

    人工智能毕业设计&课程设计

    tensorflow_transform-0.1.4-py2-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    ftqqzx.zip

    ftqqzx.zip

    高级网络人才培训专家-X00070004 第31章 配置帧中继

    高级网络人才培训专家_X00070004 第31章 配置帧中继

    tensorflow_transform-0.1.8-py2-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于ssm+vue酒店预约及管理系统.zip

    基于ssm+vue酒店预约及管理系统.zip

    基于ssm+vue的宠物店系统.zip

    基于ssm+vue的宠物店系统.zip

    基于ssm省出口基地公共信息服务平台.zip

    基于ssm省出口基地公共信息服务平台.zip

    分子模拟技术在传统药物设计领域应用20160121.pdf

    分子模拟技术在传统药物设计领域应用20160121

    LS-201510-DS应用案例.pdf

    LS-201510-DS应用案例

    KEPServerEX V6.15 2024最新版

    最新版 [EX 6.15] KEPServerEX-6.15.132.0。 产品下载一次将运行 2 小时,可以通过停止和启动运行时服务随时重复演示期。

    基于Spring Cloud的Spark开发平台设计源码

    这是一个基于Spring Cloud Hoxton、Spring Boot 2.3、OAuth2、Security、Nacos、flowable、vue-element的Spark开发平台设计,使用Java语言开发,包含1018个文件。主要文件类型包括268个Java源文件、206个JavaScript文件、165个PNG图片文件、147个HTML文件、48个XML文件、26个CSS文件、24个gitignore文件、18个YAML文件和14个JSON文件。该项目是一个前后端分离的脚手架平台,提供了丰富的功能模块,包括系统管理(组织机构、角色用户等),旨在为开发者提供一个高效、便捷的开发环境。

    tensorflow_privacy-0.7.0-py3-none-any.whl

    算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Global site tag (gtag.js) - Google Analytics