`
uqortbsa
  • 浏览: 14726 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

javascript类的实现

阅读更多
在函数内通过this指针引用的变量或者方法都会成为类的成员


在javascript中,function本身的定义就是类的构造函数


1.当解释器遇到new操作符时便创建一个空对象
2.开始运行函数,并将其中的this指针都指向这个新建的对象
3.因为当给对象不存在的属性赋值时,解释器就会为对象创建该属性,这样函数执行就是初始化这个对象的过程,即实现构造函数的作用。
4.当函数执行完后,new操行符就返回初始化后的对象。


使用prototype(所对应类的实例的原型)对象定义类成员
1.创建一个新的对象,并让this指针指向它。
2.将函数的prototype对象的所有成员都赋给这个新对象。
3.执行函数体,对这个对象进行初始化操作。
4.返回(1)中创建的对象。

prototype对象初始化过程发生在函数体(构造器)执行之前,所以可以在函数体内部调用prototype中定义的属性和方法。

原型对象的定义必须在创建类实例的语句之前,否则它将不会起作用。

在javascript中每个属性和方法都是独立的,它们通过this指针联系在一个对象上。


实现类的私有成员

在javascript中,一个函数内部定义的变量(局部变量),该变量不能够被此函数外的程序所访问,却可以被函数内部定义的嵌套所访问。
这些局部变量(私有成员),被所有在构造函数中定义的公有方法所共享,而且仅被在构造函数中定义的公有方法所公享。这意味着,在prototype中定义的类成员将不能访问在构造体中定义的局部变量。
<script language="JavaScript" type="text/javascript">
<!--
function class1(){
	var pp=" this is a private property";
	function pm(){
		alert(pp);
	}
	this.method1=function(){
		pp="pp has been changed";
	}
	this.method2=function(){
		pm();
	}


}
	var obj1=new class1();
	obj1.method1();
	obj1.method2();
-->
</script>

实现静态成员
<script language="JavaScript" type="text/javascript">
<!--
function class1(){
	var pp=" this is a private property";
	function pm(){
		alert(pp);
	}
	this.method1=function(){
		pp="pp has been changed";
	}
	this.method2=function(){
		pm();
	}


}
	var obj1=new class1();
	obj1.method1();
	obj1.method2();
-->
</script>

反射机制:程序在运行时能够获得自身的信息。

for(var p in obj){
if(typeof(obj[p]=="function")){
   obj[p];
}else{
   alert(obj[p]);
}
}
分享到:
评论

相关推荐

    JavaScript 实现基础 LinkedList 功能

    在JavaScript中实现LinkedList,我们需要理解其基本概念、操作以及如何用原生JavaScript对象来模拟链表结构。 首先,LinkedList由一系列节点(Node)组成,每个节点包含两部分:数据和指向下一个节点的引用。在...

    javascript 原生态js类继承实现的方式

    而实例则是类的一个具体实现。 我们还知道,面向对象编程有三个重要的概念 - 封装、继承和多态。 但是在JavaScript的世界中,所有的这一切特性似乎都不存在。 因为JavaScript本身不是面向对象的语言,而是基于对象...

    在JavaScript中实现类的方式探讨

    在JavaScript中实现类的方式主要有几种,包括对象字面量(Object Literal)、构造函数(Constructor)、原型链(Prototype Chain)以及ES6引入的类语法。每种方式都有其适用的场景和特点,理解它们有助于我们更好地...

    javascript实现的一些网页特效

    JavaScript可以通过控制CSS样式或直接绘制图形来创建这类动画。例如,使用`requestAnimationFrame`循环更新元素位置或透明度,以创建平滑的过渡效果。 2. **图片轮播** 图片轮播是网站中常见的功能,用于展示一组...

    web期末大作业 基于HTML+CSS+JavaScript实现的生活类购物商城首页源码

    web期末大作业 基于HTML+CSS+JavaScript实现的生活类购物商城首页源码 web期末大作业 基于HTML+CSS+JavaScript实现的生活类购物商城首页源码 web期末大作业 基于HTML+CSS+JavaScript实现的生活类购物商城首页源码 ...

    web期末大作业 基于HTML+CSS+JavaScript实现的农业类水果商城首页源码

    web期末大作业 基于HTML+CSS+JavaScript实现的农业类水果商城首页源码 web期末大作业 基于HTML+CSS+JavaScript实现的农业类水果商城首页源码 web期末大作业 基于HTML+CSS+JavaScript实现的农业类水果商城首页源码 ...

    javaScript实现另存为功能

    然后,将这些内容转换为Blob对象,Blob是JavaScript中的一个类,用于表示不可变的、原始数据的类文件对象。 2. **URL.createObjectURL()**:有了Blob对象后,可以使用URL.createObjectURL()方法生成一个临时的URL,...

    IOS WebView与JavaScript交互实现Web App

    通过以上方式,我们不仅可以将数据从Objective-C传递给JavaScript,还可以从JavaScript接收数据,实现了双向通信。 在压缩包文件"JSInteraction"中,可能包含了示例的HTML文件、JavaScript脚本以及相关的Objective-...

    javascript 实现IP地址的检测分类

    带注释,可运行,代码一看就懂。运行简单!希望支持 。所有者shine

    javascript 实现排序分类功能

    javascript 实现排序分类功能, 冒泡排序, 快速排序等等

    web期末大作业 基于HTML+CSS+JavaScript实现的电商类化妆品购物商城首页源码

    web期末大作业 基于HTML+CSS+JavaScript实现的电商类化妆品购物商城首页源码 web期末大作业 基于HTML+CSS+JavaScript实现的电商类化妆品购物商城首页源码 web期末大作业 基于HTML+CSS+JavaScript实现的电商类化妆品...

    Android WebView与JavaScript交互实现Web App

    `JavaScriptInterface`是一个自定义类,包含要暴露给JavaScript的方法。需要注意的是,为了安全起见,从Android 4.2(API级别17)开始,所有公开给JavaScript的对象方法默认都是不可调用的,因此需要使用`@...

    web期末大作业 基于HTML+CSS+JavaScript实现的生活类购物商城网站源码(10页)

    web期末大作业 基于HTML+CSS+JavaScript实现的生活类购物商城网站源码(10页) web期末大作业 基于HTML+CSS+JavaScript实现的生活类购物商城网站源码(10页) web期末大作业 基于HTML+CSS+JavaScript实现的生活类购物...

    web期末大作业 基于HTML+CSS+JavaScript实现的折扣类电子商务商城源码(5页)

    web期末大作业 基于HTML+CSS+JavaScript实现的折扣类电子商务商城源码(5页) web期末大作业 基于HTML+CSS+JavaScript实现的折扣类电子商务商城源码(5页) web期末大作业 基于HTML+CSS+JavaScript实现的折扣类电子商务...

    web期末大作业 基于HTML+CSS+JavaScript实现的服装类电子商务商城源码(4页)

    web期末大作业 基于HTML+CSS+JavaScript实现的服装类电子商务商城源码(4页) web期末大作业 基于HTML+CSS+JavaScript实现的服装类电子商务商城源码(4页) web期末大作业 基于HTML+CSS+JavaScript实现的服装类电子商务...

    aspnet操作javascript类

    2. **JavaScript类的继承**:JavaScript支持原型链实现的继承,通过原型对象可以实现类之间的继承关系。通过Object.create方法或修改构造函数的prototype,可以让一个类继承另一个类的属性和方法。 3. **模块化设计...

    JavaScript实现的SimpleDateFormat

    在JavaScript中,没有内置的`SimpleDateFormat`类,它是一个Java中的类,用于日期和时间的格式化。然而,由于JavaScript在处理日期时的功能相对有限,开发者常常需要自定义函数或者使用第三方库来实现类似的功能。这...

    javascript实现点击放大图片

    在网页设计中,提供一种用户友好的方式来查看图片细节是非常重要的。...6. JavaScript类和模块化编程。 通过熟练掌握这些知识点,你可以轻松地在网页中实现点击图片放大这一常见的交互功能,提升用户的浏览体验。

Global site tag (gtag.js) - Google Analytics