javascript面象对象编程的三种方法

本文介绍了JavaScript中实现面向对象编程的几种方法,包括使用函数作为类、通过原型链实现继承等。并通过具体示例展示了如何创建类及其实例。

 <script>
    /*
     * 第一种,函数即类,利用prototype来模拟对象的方法,简单 ,不包括继承
     */
        //------------------------------------------------------
        var myclass = function () {
            this.initialize.apply(this, arguments);
          }
        myclass.prototype = {
            initialize: function (a, b) {
                this.id = a;
                this.name = b;
            },
            speak: function () { alert(this.name); }
        };

        var user = new myclass(1, 'yandavid')
        user.speak();
        //------------------------------------------------------

        /*
         * 第二三种,实现了简单的继承关系,只不过第二种用的是扩展Object的方法,第三种用的是prototype,其实都是
         对原型的扩展,呵呵
         */

        //------------------------------------------------------
        var Class = {
            create: function () {
                return function () {//实际上把所有的属性定义到intiliaze方法(实际上是一个类)中,   
                    this.initialize.apply(this, arguments); //然后通过对象冒充方式继承该类   
                }
            }
        }

        /*
        建立空类
        先实例化超类,再把超类中的方法复制到子类中去,注意,实际上prototype类定义机制中并没有直接定义
        类的属性是通过intilize方法,而且所有的方法都直接定义在prototype中,所以直接用原型链方式
        */
        Object.extend = function (destination, source) {
            for (property in source) {
                destination[property] = source[property];
            }
            return destination;
           }

        var Pirate = Class.create();
        Object.extend(Pirate.prototype, {
            initialize: function (name) { this.name = name; },
            speak: function (message) { return this.name + ':' + message + ', yarr!'; }
        }
);

        var a = new Pirate("sss");
        alert(a.speak("Pirate"));

        //------------------------------------------------------
        var Person = Class.create();
        Person.prototype = {/*把方法定义到prototype中,注意,是通过initalize方法初始化类的属性 */
            initialize: function (name) {
                alert(arguments.caller);
                this.name = name;
            },
            say: function (message) {
                return this.name + ': ' + message;
            }
        };
        var guy = new Person('Miro');
        alert(guy.say('hi'));
        //------------------------------------------------------


    </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值