1.工厂方式

<script type="text/javascript"> 

function createObject(name){ 

       var p = new Object(); 

       p.name=name; 

       p.say = function(){alert(p.name+'ff');} 

       return p; 

} 

var p1 = createObject("p1"); 

var p2 = createObject("p2"); 

alert(p1.name+" "+p2.name); 

p1.say();p2.say(); 

alert(p1.say==p2.say); //false 

</script>

问题:每创建一个对象,对象的方法是新对象,浪费资源

2.构造函数方式

<script type="text/javascript"> 

function Person(name){ 

this.name = name; 

this.say = function(){ 

alert("I am "+this.name); 

} 

} 

var p1 = new Person("wang"); 

var p2 = new Person("li"); 

p1.say(); 

p2.say(); 

alert(p1.say==p2.say); //false 

</script>

问题:创建对象时比工厂方法更于理解。和工厂方法一样,每个对象都有自己的方法,浪费资源.

3.原型方式

function Person(){}

Person.prototype.name="";

Person.prototype.say=function(){
alert("I am"+this.name); } var p1=new Person(); var p2=new Person(); alert(p1.say==p2.say);//true

问题:无法在构造方法中传递参数,所有对象共享属性。

优点:对象共用方法,节约资源的。

4.构造方法+原型方式

function Person(name){
this.name=name; } Person.prototype.say=function(){
alert("I am"+this.name); } var p1=new Person("wang"); var p2=new Person("li"); p1.say(); p2.say(); alert(p1.say==p2.say);//true

优点:解决了前面提到的问题

问题:封装不够完美。

5。动态原型方式

function Person(name){
this.name=name; if(Person.prototype.say==undefined){
Person.prototype.say=function(){
alert("I am "+this.name); } } } var p1=new Person("wang"); var p2=new Person("li"); p1.say(); p2.say(); alert(p1.say==p2.say);//true

结论:一种完美的解决方案。

6.对象的创建--JSON

var person={};

var girl={

     name:"miss wang",

     age:20,

     show=function(){
alert("my name is "+this.name); } }

JS定义类及对象的更多相关文章

  1. js定义类或对象

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. ES5:深入解析如何js定义类或对象。

    1.原始方式 var oCar = new  Object; oCar.color = "blue"; oCar.showColor = function(){alert(this ...

  3. JS创建类和对象

    JavaScript 创建类/对象的几种方式 在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活 ...

  4. JS创建类和对象(好多方法哟!)

    http://www.cnblogs.com/tiwlin/archive/2009/08/06/1540161.html 这是别人写的~~~我借来看看 JavaScript 创建类/对象的几种方式 ...

  5. 我所了解的关于JavaScript定义类和对象的几种方式

    原文:http://www.cnblogs.com/hongru/archive/2010/11/08/1871359.html 在说这个话题之前,我想先说几句题外话:最近偶然碰到有朋友问我“hois ...

  6. JavaScript定义类与对象的一些方法

    最近偶然碰到有朋友问我"hoisting"的问题.即在js里所有变量的声明都是置顶的,而赋值则是在之后发生的.可以看看这个例子: 1 var a = 'global'; 2 (fu ...

  7. JS创建类和对象,看完了,头就不大了

    JavaScript 创建类/对象的几种方式 在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活 ...

  8. JS定义类的六种方式详解

    转载自: http://www.jb51.net/article/84089.htm 在前端开发中,经常需要定义JS类.那么在JavaScript中,定义类的方式有几种,分别是什么呢?本文就JS定义类 ...

  9. 优雅地创建未定义类PHP对象

    在PHP中,如果没有事先准备好类,需要创建一个未定义类的对象,我们可以采用下面三种方式: new stdClass() new class{} (object)[] 首先是stdClass,这个类是一 ...

随机推荐

  1. iOS:NSBundle的具体介绍

    NSBundle介绍:它是一个单例类,用来加载资源 bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-i ...

  2. 附3 springboot源码解析 - 构建SpringApplication

    package com.microservice.framework; import org.springframework.boot.SpringApplication; import org.sp ...

  3. PHP json_encode转换空数组为对象

    问题描述: php返回json格式的数据,当返回数据的为数组,且key为字符串时,json化后将返回jsonObject,但是如果是空数组,有可能返回的就是jsonArray,数据结构不一致导致端解析 ...

  4. 虚拟机配置Cognos报错CFG-ERR-0106

    在虚拟机中安装Cognos 之后,启动了好多次,都启动失败,如下图所示,错误如下图所示 已确保已下信息设置正确 1:内容库配置OK 2:Java_home OK 3:字符集OK ----------- ...

  5. IE11与Cognos怪谈

    想必大家都知道高版本的IE运行Cognos相关组件的时候要设置兼容性,安全级别相对调低等设置.但是升级了win10系统后,默认的IE版本是IE11的,装了Cognos10.2.1之后,进行了一个常规的 ...

  6. 在简化版Fedora8上安装jdk-7u25-linux-i586.rpm的过程

    台式机的操作系统重新换回了Fedora8,遵从一些大牛的建议,把很多附件去了,尽量让系统保持最简化.这样能熟悉每个软件的安装配置过程,也能减少版本间的冲突. 进入控制台后,查查有没有Java存在系统中 ...

  7. iOS用户体验之-导航之道

    iOS用户体验之-导航之道 用户不会意识到有导航指向的存在除非他遇到非预期的效果. 能够说导航时逻辑跳转的节点.所以导航对用户体验是至关重要的. iOS中有三种类型的导航.每一种适合不同类型的app. ...

  8. MFC 小知识总结二

    1 UpdateData 不能及时更新控件内容 原因: UpdateData是通过数据交换实现改变控件显示的.改变了之后必需要调用一次OnPaint才干实现刷新. 因此,若是在一个函数里重复多次调用有 ...

  9. maven command to create your application

    How do I make my first Maven project? We are going to jump headlong into creating your first Maven p ...

  10. Angular CLI的安装及使用

    安装命令行 npm install -g @angular/cli 检查命令行 ng v 使用这个命令可以检查 angular cli是否安装成功.我检查的时候发现没有安装成功,提示我使用的node. ...