`
mtnt2008
  • 浏览: 369564 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

js面向对象基础(整理)

阅读更多

声明:下面的都是在je论坛上看到的,在这里整理了一下。

 

什么才算javascript中的对象:


   a、基本数据类型的包装对象。例如String Number Boolean.建议直接用var s=""; var i=1; var b=false;定义,包装类与java中的包装类不同。javascript中不要用包装类。
   b、javascript预定义的对象。Function Array Date   RegExp  Error等对象。
   c、用new Object()创建的对象。等同与var o={a:0,b:'s'};
   d、用自定义的构造函数创建的对象。function O(){};  var o=new O();
   e、dom模型定义的构造函数,浏览器为你创建的对象。用var o=document.getElementById();或其他方法获得。
   f、null也是对象。typeof(null)= object.undefined 可以理解为变量预编译的初始化值,而null是特殊的对象。如果一个变量=null,说明这个变量是个对象,但不是我上面 提到的任何来源方式的对象。 如document.getElementById(页面中不存在的id);可以产生一个null对象。
   用typeof()  方法返回的是 object 的变量都是对象。 Function除外用new定义的不一定都是对象。

 

在一个自定义“类”中有中有几个地方可以定义属性。
   a、函数名中直接定义。  如Person.name。在这定义相当于类名的属性。静态的,访问的时候必须用Person.name来访问,不能用new Person().name访问,也访问不到。
   b、构造函数的this.中。当你用new function()时,这些属性就是你所持对象的属性。用new Person().属性  来访问。
   c、构建好对象以后,给对象增加属性。和构造函数中的属性使用类似。
   d、函数名的prototype中
   e、父类或Object 的prototype中。(注释: 可用prototype为函数动态新增函数属性与方法 ,相当于对象的属性

 

在prototype中的都是属于对象的公有(方法/属性)

 

静态方法中可以用this.属性来引用静态属性,也可以用类名.属性来应用;对象的方法引用静态变量,只能用类名.属性;

 

JS中面向对象的5中写法

 

//第1种写法
function Circle(r) {
      this.r = r;
}
Circle.PI = 3.14159;
Circle.prototype.area = function() {
  return Circle.PI * this.r * this.r;
}

var c = new Circle(1.0);   
alert(c.area()); 

 

//第2种写法
var Circle = function() {
   var obj = new Object();
   obj.PI = 3.14159;
   
   obj.area = function( r ) {
       return this.PI * r * r;
   }
   return obj;
}

var c = new Circle();
alert( c.area( 1.0 ) );

 

//第3种写法
var Circle = new Object();
Circle.PI = 3.14159;
Circle.Area = function( r ) {
       return this.PI * r * r;
}

alert( Circle.Area( 1.0 ) );

 

//第4种写法
var Circle={
   "PI":3.14159,
 "area":function(r){
          return this.PI * r * r;
        }
};
alert( Circle.area(1.0) );

 

Java 代码 
  1. //第5种写法   
  2. var Circle = new  Function( "this.PI = 3.14159;this.area = function( r ) {return r*r*this.PI;}" );  
  3.   
  4. alert( (new  Circle()).area( 1.0 ) ); 
第1种:
优点:体现了OO的继承特性. 每次初始化Circle对象,都只设置了必须的值(r).

第2种:
缺点:每次都必须初始化很多变量,时间成本+内存成本,相比第一种高昂了点.

第3种:
缺点:虽然实现了封装,但貌似Circle只是一个包名,对于OO的继承好像发挥不大.

第4种:
缺点:同第3种. 只是用了Object Literal方式初始化了对象.

第5种:
缺点:代码编写,确实不方便.没体现更好的分离.

个人觉得第一种更符合OO开发要求!
第四种适合可以理解成封包! 且非常灵活,本身就是一种json格式,所以方便应用于json格式传递环境下,eg:ExtJs就是采用了第一种方式封装核心,第四种方式打包UI

看了大家的回复之后,发觉第一种和第四种是大家常接触的。

//第1种写法
function Circle(r) {
      this.r = r;
}
Circle.PI = 3.14159;
Circle.prototype.area = function() {
  return Circle.PI * this.r * this.r;
}

var c = new Circle(1.0);  
alert(c.area());


//第4种写法
var Circle={
   "PI":3.14159,
"area":function(r){
          return this.PI * r * r;
        }
};
alert( Circle.area(1.0) );

第一种从java角度来说,是一个普通的类,这个类需要调用的时候,就new xx()这样一个对象出来。

第四种,从java的角度来 说,是一个单例类!你调用的时候直接XXX.xx()这样调用,不需要new。

如果你可以理解普通的类,跟单例类的概念,你应该就可以明 白什么类应该是什么用法了。

这2种写法是最常见的,也是推荐的写法。其它的,比较非主流吧。至于第五种,算是垃圾写法 吧,Function效率很低。


1种最规范,不过现在偷懒用2,代码少点。
3,4好像没有内部变量,经常有问题(个人经验)。
5.看就知道,类不能大,代码多了没法读,代码少时候用不错。


这应该也算一种
var Circle=function(){  
    PI = 3.14159;
    return {
        area : function(r){
            return this.PI * r * r;
        }
    }
}();      
alert( Circle.area(1.0) ); 
分享到:
评论

相关推荐

    《UML面向对象技术》期末复习吐血整理.pdf

    首先,标题《UML面向对象技术》期末复习吐血整理.pdf指明了文档的主题内容是关于统一建模语言(UML)和面向对象技术的期末复习资料,这是面向对象分析与设计的重要组成部分。UML是一种用于软件系统设计的标准化建模...

    JavaScript面向对象核心知识与概念归纳整理

    JavaScript是一种广泛应用于Web开发的脚本语言,尤其以其强大的面向对象特性著称。本文将深入讲解JavaScript中的面向对象核心知识与概念。 1. **面向对象的概念** - 面向对象编程(OOP)是一种编程范式,它强调...

    韩顺平javascript笔记(最全整理 dom编程 oop 基础语法)

    在韩顺平老师的笔记中,"JS 面向(基于)对象编程.doc"可能详细讲解了JavaScript中的类、构造函数、原型链、继承和封装等面向对象的高级主题;"dom编程.doc"则可能涵盖了常见的DOM操作方法、事件处理和性能优化策略...

    自己整理的常用js

    面向对象编程(OOP)在JavaScript中也有体现,尽管它不是一种典型的面向对象语言。类和对象的概念,构造函数,原型链,继承(如原型继承、ES6的class继承)是OOP的核心概念。模块化开发是现代JS的另一个重点,...

    JavaScript学习笔记,javascript基础知识,基础语法整理.pdf

    JavaScript是一种解释型的、面向对象的、弱类型的脚本语言,主要应用于Web页面,用于增加交互性和动态功能。它由网景公司的Brendan Eich在1995年发明,起初被称为LiveScript,后来为了与Java保持一致,更名为...

    JS代码块整理.zip

    这些是JavaScript中的一些基础知识点,"JS代码块整理.zip"文件很可能包含了这些主题的具体示例和应用场景,帮助开发者更好地理解和运用JavaScript。通过学习和实践这些代码块,可以提升开发效率,解决实际问题。

    java基础笔试题(标准答案已整理).docx

    本文档总结了 Java 基础知识点,涵盖了 Java 语言的基本概念、变量、运算符、控制结构、函数、数组、面向对象编程、继承、多态、封装、final 关键字等方面的知识点。 一、Java 基础概念 Java 是一种面向对象的编程...

    纯js运用最基础知识实现贪吃蛇

    自己重新学习了一天Js,之前有过基础,花了一点时间做了个贪吃蛇,用最简单的语法,并没有用面向对象,只用面向过程,隔两天可能会用面向对象来写。我认为初学JS的同学们可以下载看看,应该能学到挺多的,里面包含我...

    「JavaScript学习资料整理」系列,构建JavaScript前端知识体系,积累JavaScript前端开发经验.zip

    首先,JavaScript是一种解释型的、面向对象的、动态类型的脚本语言。它主要应用于Web浏览器,但也可在服务器端(如Node.js)和其他环境运行。JavaScript的学习应从基础语法开始,包括变量声明、数据类型(如字符串、...

    javaScript资料.zip(个人整理的资料)

    这份名为“javaScript资料.zip”的压缩包,显然是一个个人精心整理的JavaScript学习资源集合,包含了各种常用JS知识点、函数、参数和语法介绍文档,对于初学者和进阶者来说都是宝贵的参考资料。 JavaScript语法基础...

    js的全套学习总结,xmind版本

    对象和原型是JavaScript的核心,它们构成了面向对象编程的基础。JavaScript使用原型链实现继承,每个对象都有一个__proto__属性,指向创建它的构造函数的原型。了解如何创建和操作对象,以及原型、原型链和构造函数...

    部分J2EE基础知识整理

    J2EE的基础知识点 集合框架 面向对象的三大特征 JavaWeb 前端比较少 Javascript JQuery 笔记中有其他作者发的博客地址,有的知识点是从其他作者中摘取的 最后欢迎大家补充及纠正

    Javascript培训资料整理分享:Javascript入门指南

    ### JavaScript培训资料整理分享:JavaScript入门指南 #### 一、初识JavaScript ##### 1.1 网页三剑客 网页开发中通常提到的...了解这些基础知识后,你可以进一步探索更高级的主题,如面向对象编程、异步编程等。

    java web开发基础知识整理

    1. **Java**:Java是一种广泛使用的面向对象的编程语言,特别适合于网络环境。在Web开发中,Java主要用于服务器端编程,例如使用Servlets和JavaServer Pages (JSP) 来处理HTTP请求并生成动态内容。`Think in Java`是...

    JBF 1.01 JS基础代码库.zip

    12. **类和继承**:JavaScript的`class`关键字是基于原型的面向对象编程的语法糖,支持继承、多态等特性。 以上只是JavaScript基础的一部分,实际的代码库可能包含更多高级特性和实战技巧,例如闭包、作用域链、...

    JavaScript基础函数整理汇总

    JavaScript是一种面向对象的编程语言,允许开发者创建对象并为其定义方法。 代码中首先通过new关键字和Object构造函数创建了一个testobj对象,然后为其添加了一个名为run的方法,并通过对象调用该方法。 3. 函数...

    JavaScript入门相关知识网络整理

    JavaScript支持面向对象编程(OOP),这使得开发者能够创建复杂的、结构化的代码。 #### 二、在HTML中嵌入JavaScript JavaScript可以通过以下三种方式嵌入到HTML页面中: 1. **内联式**:直接在HTML元素中使用`...

    javascript思维导图

    此外,ES6引入了类的概念,使得JavaScript的面向对象编程更加直观。 事件和DOM(文档对象模型)处理是JavaScript与用户交互的关键。通过监听和触发事件,JavaScript可以响应用户的操作,改变网页状态。DOM是HTML和...

Global site tag (gtag.js) - Google Analytics