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. Kmeans聚类算法分析(转帖)

    原帖地址:http://www.opencvchina.com/thread-749-1-1.html       k-means是一种聚类算法,这种算法是依赖于点的邻域来决定哪些点应该分在一个组中. ...

  2. [置顶] think in java interview-高级开发人员面试宝典(一)

    “生死六重门” 无论你是在职,非在职,高级工程师,工程师,架构师,如果你正在面试阶段,请看完此文! 相信这篇文章对你的职业生涯和阶值观会造成重大的改变! 如果你是一名PM或者是管理者正在物色合适的开发 ...

  3. Android硬件入门-照相机

    学习Android不能不学习照相机,现在各种美容相机,微信朋友圈发图,现在升级之后直接下拉就可以照相了,各种艳照的的源头也是照相机,扯远了,有点邪恶了,还是简单学习一下Android中照相机的使用,A ...

  4. Java基础(六):继承

    1.继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具 ...

  5. [Android系列—] 2. Android 项目文件夹结构与用户界面的创建

    前言 在 [Android系列-] 1. Android 开发环境搭建与Hello World 这一篇中介绍了怎样高速搭建Android开发环境, 并成功了建立一个没有不论什么代码更改的 Androi ...

  6. POJ2762 Going from u to v or from v to u? 强连通+缩点

    题目链接: poj2762 题意: 给出一幅单向图.问这张图是否满足   随意两点ab 都能 从a到达b 或  从b到达a 题解思路: 推断一幅图是否满足弱连通 首先想到的是将图中的 强连通分量(能互 ...

  7. TCP/IP、SOCKET、HTTP之间的联系与区别

    主要内容: 1.网络的七层协议 2.TCP/IP.SOCKET.HTTP简介 3.TCP连接.HTTP连接.Socket连接的区别 一.网络的七层协议 网络七层由下往上分别为物理层.数据链路层.网络层 ...

  8. Python网络编程 - 请求地址上的文件并下载

    我们用到了requests库,由于是第三方的,必须下载 如果是python 2.x用下面命令 pip install requests python 3.x用下面命令 easy_install req ...

  9. 第一节,学习cocos2d-x的前期准备

    1,我用的mac系统,在mac系统上装上cocos2d-x的模板 2,用doxygen工具装上API,这个非常重要,没有API的开发不叫开发,因此我们要习惯看API 3,知道怎么查看cocos2d-x ...

  10. poj 1879 Truck History

    本题链接:点击打开链接 题目大意: 输入n表示卡车辆数,输入每辆卡车编号.即长度为7的字符串,每辆卡车编号均可由其他类型编号衍生过来,求由当中一辆衍生出其他全部的最小衍生次数(有一个字符不同就需衍生一 ...