`

诡异的javascript面向对象

 
阅读更多

        javascript是函数式语言,但稍加改装可以以面向对象的方式使用。

最近开发前台应用,都是使用同事开发的js ui控件,看得头大,函数式与面向对象式混杂在一起,凌乱之极,逻辑语义不完整,甚至矛盾,总之可读性非常之差。也许js火候不够,看不懂人家的代码吧。下面是一些我觉得应该遵循的规则,以下会持续更新,每天写一点,写的不好的je的童靴们请指教。

 

一、javascript的类

例子1、

 

function square(){
	var w=0;
	this.area=function(){
		return  w*w;
	};
	this.setW=function(w1){
		w=w1;
	}
	this.getW=function(){
		return w;
	}
}

var s=new square();
s.setW(5);
alert(s.area());

  熟悉吧,跟java中的有点类似啦。

  以上代码中,w是个私有变量,在外部不能对w进行操作,比如这样调用h.w=23;

 

 

以上的area函数是直接在定义类时定义的,再看看例子2

例子2、

function square(){
	var w=0;
	this.setW=function(w1){
		w=w1;
	}
	this.getW=function(){
		return w;
	}
}
square.prototype.area=function(){return this.getW()*this.getW();};
var s=new square();
s.setW(5);
alert(s.area());

方式2与方式1不同之处在于把area函数移动至外部再定义 ,且其实现中不是直接 return w*w,因为w是私有变量,外部是不可见的,所以用this.getW来替代。

 

例子3、

function square(){   
     this.w=10;   
     this.area=function(){   
	     return  w*w;  
        // return  this.w*this.w;   
     };   
    
 }     
 var s=new square();   
 alert(s.area()); 

执行上面的例子时是运行不了的,正确的做法是 return  this.w*this.w; 即用this来修饰w. 在成员函数中调用其他成员函数或成员变量,必须要用this修饰,否则是调用的是作用域内的变量或函数,而不是调用类成员变量或函数,这点切记。 

 

例子4、

function square(){
	this.w=3;
	
	function wShow(){
	   return w;
	}
	this.showWShow=function (){
	   return wShow();
	}
}
var s=new square();
alert(s.showWShow());

 

执行以上代码将会出错提示 'w is not define'

以上内部函数试图访问外部函数的w成员,但是造成的效果确是访问作用域内名为w的变量,但无论是全局作用域还是square的作用域,都没有名为w的变量,故提示出错。这点告诉我们,用this修饰的变量跟不用this修饰的变量是完全不同的两个概念,用this修饰的变量只属于类本身,不能被内部非成员函数访问。

wShow可以看成是square的内部类,但却无法访问square的成员w,这点跟java中差别很大

 

 

总结1:在函数定义中,只有有this修饰的成员才能算是类成员,且该类成员是公有成员;类是没有私有成员的,但在函数

中用可以把用var来修饰的变量看成是类的私有成员(但实际上不是的,至少类的私有变量,这点跟java有很大不同)。另外上面讨论的是用function来定义的类,其他情况不适用。如字面常量类实例

var  square={'width':'20','area':function(){return width*width}}

此种方式定义的是对象实例,而不是类了,注意区分(请看第二部分,待写)。

 

二、javascripte对象

1
0
分享到:
评论

相关推荐

    JavaScript面向对象编程指南

    JavaScript面向对象编程指南

    JAVASCRIPT 面向对象编程精要

    ### JavaScript面向对象编程精要 #### 一、引言 JavaScript是一种灵活且强大的脚本语言,它虽然起源于一种简单的浏览器脚本语言,但随着时间的发展,JavaScript已经成为了一种功能全面的编程语言,尤其是在Web开发...

    Javascript 面向对象的JavaScript进阶

    ### JavaScript面向对象进阶知识点详解 #### 8.1 面向对象编程的基本特性 在探讨面向对象的JavaScript之前,我们首先需要了解面向对象编程(Object-Oriented Programming, OOP)的基本特性:封装性、抽象性、继承...

    JavaScript面向对象编程指南.pdf

    JavaScript面向对象编程指南.pdf

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

    面向对象编程(Object-Oriented Programming,OOP)是JavaScript中的一个重要概念,它允许开发者通过对象来组织代码,提高可读性和可维护性。本指南的第二版深入探讨了JavaScript的面向对象特性,旨在帮助开发者更好...

    javascript面向对象编程.pdf

    总而言之,学习现代JavaScript面向对象编程,有助于开发者在认识这门语言演化的基础上,运用面向对象的设计和编程模式来构建更加健壮和可维护的JavaScript应用程序。同时,测试和调试是保证代码质量不可或缺的环节,...

    JavaScript面向对象精要(英文版)

    ### JavaScript面向对象精要 #### 一、概述 《JavaScript面向对象精要》是一本深入讲解JavaScript面向对象编程原理的专业书籍。本书由知名的前端开发者Nicholas C. Zakas撰写,全面介绍了JavaScript作为一种动态...

    JavaScript面向对象编程指南 pdf

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

    Javascript面向对象编程

    ### JavaScript面向对象编程详解 #### 一、引言 JavaScript作为一种广泛使用的脚本语言,在Web开发领域占据着举足轻重的地位。尽管JavaScript本质上是一种基于原型的语言,但它也支持面向对象编程的一些特性,使得...

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

    ### JavaScript面向对象编程知识点概述 #### 一、现代JavaScript编程概览 - **JavaScript的演进**:自诞生以来,JavaScript经历了从一个简单的脚本语言到现今被广泛应用于构建复杂应用的强大编程语言的过程。它的...

    JavaScript面向对象编程指南 完整版

    JavaScript面向对象编程指南完整版是扫描的....

    javascript面向对象编程--传智播客--蔡世友

    javascript面向对象编程--传智播客--蔡世友

    javascript面向对象编程

    面向对象编程的基础知识及其在JavaScript中的运用;数据类型、操作符以及流程控制语句;函数、闭包、对象和原型等概念,以代码重用为目的的继承模式;BOM、DOM、浏览器事件、AJAX和JSON;如何实现JavaScript中缺失的...

    面向对象JavaScript开发

    JavaScript,作为一种广泛应用于Web开发的动态脚本语言,最初被设计为简单的客户端脚本语言,但随着技术的发展,它已经发展出了丰富的面向对象编程(OOP)特性。面向对象JavaScript开发是现代Web开发中不可或缺的一...

    javascript面向对象框架

    MooTools提供了许多实用的工具和功能,比如Element、Fx、Events、Class等模块,这些模块使得开发人员能够轻松地处理DOM、动画效果、事件以及创建复杂的JavaScript对象。 1. **MooTools的Class系统**:MooTools的...

    JavaScript面向对象基础.ppt

    8.3.1 JavaScript对象模型 JavaScript有全局对象、内置对象、宿主对象等层次结构,如DOM(文档对象模型)和BOM(浏览器对象模型)。 8.3.2 客户端对象层次介绍 客户端对象层次主要涉及浏览器提供的对象,如window、...

Global site tag (gtag.js) - Google Analytics