首页 > 其他 > 详细

面向对象与原型

时间:2015-03-22 17:49:50      阅读:85      评论:0      收藏:0      [点我收藏+]

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!