JS定义类及对象

JS定义类及对象

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);

}

}

时间: 2024-10-11 03:16:41

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

js定义类或对象

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js oop 总结</title> </head> <body> <script> /*1 原始方式 *缺点:需要创建多个car实例,推荐等级★ */ var ocar = new Object(); ocar.color

js自定义类与对象

js中创建自定义类与创建对象:js创建类与AS3,java都有很大的不同,,,下面来看看他的庐山真面目..由于js也是一个面向对象的编程语言所以也存在像其他语言那样的创建自定义的类,和通过类来创建对象.js的类是有一下三部门组成1.构造函数2.属性3.方法自定义一个类: function MyClass(id,age,name) { this.id = id; this.age = age; this.name = name; } 从这个类的定义形式可以看出,js定义类的形式和其他语言有很大的不

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

最近偶然碰到有朋友问我"hoisting"的问题.即在js里所有变量的声明都是置顶的,而赋值则是在之后发生的.可以看看这个例子: 1 var a = 'global'; 2 (function () { 3     alert(a); 4     var a = 'local'; 5 })(); 大家第一眼看到这个例子觉得输出结果是什么?'global'?还是'local'?其实都不是,输出的是undefined,不用迷惑,我的题外话就是为了讲这个东西的. 其实很简单,看一看JavaS

JS创建类和对象

JavaScript 创建类/对象的几种方式 非常好的一篇讲类和对象的文章,逐一测试,加深记忆:http://www.cnblogs.com/tiwlin/archive/2009/08/06/1540161.html 在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组

JS定义类的六种方式详解

转载自: http://www.jb51.net/article/84089.htm 在前端开发中,经常需要定义JS类.那么在JavaScript中,定义类的方式有几种,分别是什么呢?本文就JS定义类的六中方式说明如下(案例说明): 1.工厂方式 ? 1 2 3 4 5 6 7 8 9 10 11 function Car(){ var ocar = new Object; ocar.color = "blue"; ocar.doors = 4; ocar.showColor = fu

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

http://www.cnblogs.com/tiwlin/archive/2009/08/06/1540161.html 这是别人写的~~~我借来看看 JavaScript 创建类/对象的几种方式 在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组成(听起来是不是很像

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

JavaScript 创建类/对象的几种方式 在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组成(听起来是不是很像我们常听说的HASH表.字典.健/值对?),而其中的值类型可能是内置类型(如number,string),也可能是对象. 一.由一对大括号括起来 var

【05】 定义类或对象

ECMAScript 定义类或对象 ECMAScript 拥有很多创建基类的方法. (就是说,可以任意的创建类似其他语言的“类”的概念.来创造不同模具,来形成模型.实例,就是我们所谓的模型) 一:原始方式(魔芋:最简单的方式.缺点:无法创建多个实例.此时,对象无法作为模具.) 因为对象的属性和方法可以在对象创建后动态定义,可以编写下面的代码: (魔芋:创建一个对象后,可以任意在很多位置给它添加属性和方法.) var Car=newObject; Car.color ="blue"; C

javascript学习笔记---ECMAScriptECMAScript 对象----定义类或对象

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 原始的方式 因为对象的属性可以在对象创建后动态定义(后绑定),类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };不过这里有一