ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP)。面向对象的语言
有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。但
是,ECMAScript 没有类的概念,因此它的对象也与基于类的语言中的对象有所不同。
创建一个对象,然后给这个对象新建属性和方法。
var box = new Object(); //创建一个Object 对象 box.name = ‘Lee‘; //创建一个name 属性并赋值 box.age = 100; //创建一个age 属性并赋值 box.run = function () { //创建一个run()方法并返回值 return this.name + this.age + ‘运行中...‘; }; alert(box.run()); //输出属性和方法的值 上面创建了一个对象,并且创建属性和方法,在run()方法里的this,
//this表示new Object()实例化出来的那个对象
//this要放在一个作用域下,比如box.run() {} ,这个是box作用域下的方法,方可用this,来表示box本身
var name1 = ‘jack‘; alert(this.name1); //这里的this代表的是window
var box = new Object(); box.name = ‘Lee‘; box.age = 100; box.run = function () { return this.name + this.age + ‘运行中...‘; }; var box2 = box; box2.name = ‘Jack‘; box2.age = 200; box2.run = function () { return this.name + this.age + ‘运行中...‘; }; alert(box.run()); alert(box2.run());
一、工厂模式 这种方法为了解决实例化对象产生大量重复的代码问题
可以传参
//工厂模式 function createObject(name, age) { var obj = new Object(); //创建对象 obj.name = name; //添加属性 obj.age = age; obj.run = function () { //添加方法 return this.name + this.age + ‘运行中...‘; }; return obj; //返回对象引用 }; function createObject2(name, age) { var obj = new Object(); //创建对象 obj.name = name; //添加属性 obj.age = age; obj.run = function () { //添加方法 return this.name + this.age + ‘运行中...‘; }; return obj; //返回对象引用 }; var box1 = createObject(‘Lee‘, 100); //创建第一个对象 var box2 = createObject(‘Jack‘, 200); //创建第二个对象 var box3 = createObject2(‘kkk‘, 500); //创建第三个对象 //alert(box1.run()); //打印第一个对象实例的run()方法 //alert(box2.run()); //打印第二个对象实例的run()方法 //alert(typeof box1); //alert(typeof box2); alert(box1 instanceof Object); alert(box2 instanceof Object); alert(box3 instanceof Object); //不管怎样,他们都是Object类型,就无法区分,谁到底是谁的对象了
原文:http://www.cnblogs.com/laugh/p/4357644.html