声明:下面的都是在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) );
-
-
var Circle = new
Function(
"this.PI = 3.14159;this.area = function( r ) {return r*r*this.PI;}"
);
-
-
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)和面向对象技术的期末复习资料,这是面向对象分析与设计的重要组成部分。UML是一种用于软件系统设计的标准化建模...
JavaScript是一种广泛应用于Web开发的脚本语言,尤其以其强大的面向对象特性著称。本文将深入讲解JavaScript中的面向对象核心知识与概念。 1. **面向对象的概念** - 面向对象编程(OOP)是一种编程范式,它强调...
在韩顺平老师的笔记中,"JS 面向(基于)对象编程.doc"可能详细讲解了JavaScript中的类、构造函数、原型链、继承和封装等面向对象的高级主题;"dom编程.doc"则可能涵盖了常见的DOM操作方法、事件处理和性能优化策略...
面向对象编程(OOP)在JavaScript中也有体现,尽管它不是一种典型的面向对象语言。类和对象的概念,构造函数,原型链,继承(如原型继承、ES6的class继承)是OOP的核心概念。模块化开发是现代JS的另一个重点,...
JavaScript是一种解释型的、面向对象的、弱类型的脚本语言,主要应用于Web页面,用于增加交互性和动态功能。它由网景公司的Brendan Eich在1995年发明,起初被称为LiveScript,后来为了与Java保持一致,更名为...
这些是JavaScript中的一些基础知识点,"JS代码块整理.zip"文件很可能包含了这些主题的具体示例和应用场景,帮助开发者更好地理解和运用JavaScript。通过学习和实践这些代码块,可以提升开发效率,解决实际问题。
本文档总结了 Java 基础知识点,涵盖了 Java 语言的基本概念、变量、运算符、控制结构、函数、数组、面向对象编程、继承、多态、封装、final 关键字等方面的知识点。 一、Java 基础概念 Java 是一种面向对象的编程...
自己重新学习了一天Js,之前有过基础,花了一点时间做了个贪吃蛇,用最简单的语法,并没有用面向对象,只用面向过程,隔两天可能会用面向对象来写。我认为初学JS的同学们可以下载看看,应该能学到挺多的,里面包含我...
首先,JavaScript是一种解释型的、面向对象的、动态类型的脚本语言。它主要应用于Web浏览器,但也可在服务器端(如Node.js)和其他环境运行。JavaScript的学习应从基础语法开始,包括变量声明、数据类型(如字符串、...
这份名为“javaScript资料.zip”的压缩包,显然是一个个人精心整理的JavaScript学习资源集合,包含了各种常用JS知识点、函数、参数和语法介绍文档,对于初学者和进阶者来说都是宝贵的参考资料。 JavaScript语法基础...
对象和原型是JavaScript的核心,它们构成了面向对象编程的基础。JavaScript使用原型链实现继承,每个对象都有一个__proto__属性,指向创建它的构造函数的原型。了解如何创建和操作对象,以及原型、原型链和构造函数...
J2EE的基础知识点 集合框架 面向对象的三大特征 JavaWeb 前端比较少 Javascript JQuery 笔记中有其他作者发的博客地址,有的知识点是从其他作者中摘取的 最后欢迎大家补充及纠正
### JavaScript培训资料整理分享:JavaScript入门指南 #### 一、初识JavaScript ##### 1.1 网页三剑客 网页开发中通常提到的...了解这些基础知识后,你可以进一步探索更高级的主题,如面向对象编程、异步编程等。
1. **Java**:Java是一种广泛使用的面向对象的编程语言,特别适合于网络环境。在Web开发中,Java主要用于服务器端编程,例如使用Servlets和JavaServer Pages (JSP) 来处理HTTP请求并生成动态内容。`Think in Java`是...
12. **类和继承**:JavaScript的`class`关键字是基于原型的面向对象编程的语法糖,支持继承、多态等特性。 以上只是JavaScript基础的一部分,实际的代码库可能包含更多高级特性和实战技巧,例如闭包、作用域链、...
JavaScript是一种面向对象的编程语言,允许开发者创建对象并为其定义方法。 代码中首先通过new关键字和Object构造函数创建了一个testobj对象,然后为其添加了一个名为run的方法,并通过对象调用该方法。 3. 函数...
JavaScript支持面向对象编程(OOP),这使得开发者能够创建复杂的、结构化的代码。 #### 二、在HTML中嵌入JavaScript JavaScript可以通过以下三种方式嵌入到HTML页面中: 1. **内联式**:直接在HTML元素中使用`...
此外,ES6引入了类的概念,使得JavaScript的面向对象编程更加直观。 事件和DOM(文档对象模型)处理是JavaScript与用户交互的关键。通过监听和触发事件,JavaScript可以响应用户的操作,改变网页状态。DOM是HTML和...