js 的 构造函数

    function MyClass( msg ){

        //公有属性
        this.myMsg = msg;
        this.address = '上海';
        this.name = '公有name';

        //私有属性
        var name = 'zhou',
            age = 18,
            that = this;

        //私有方法
        function sayName() {
            console.log('zhou,yong');
        }

        //共有方法
        this.sayAge = function(){
            console.log('27');
        }
    }

    MyClass.prototype.sayHello = function(){
        // body...
        alert('hello!!');
    };

    //静态属性
    MyClass.country = 'china';

    //静态方法
    MyClass.sayHi = function(){
        console.log('sayHi');
    }

    //实例化
    var newObj = new MyClass( 'xxx');

    //测试属性
    console.log( MyClass.country );                //china
    console.log( newObj.name );                     //公有name
    console.log( newObj.constructor.country );      //china
    console.log( MyClass.address );             //undefined
    console.log( newObj.address );                 //上海

    //测试方法
    MyClass.sayHi(); //sayHi
    newObj.sayHi();   //newObj.sayHi is not a function 实例上无此方法
    newObj.constructor.sayHi(); //sayHi 实例通过constructor 指向了类
    newObj.sayHello(); //hello  //实例继承了prototype上的方法
    MyClass.sayHello(); // MyClass.sayHello is not a function, sayHello是原型方法

    //测试 prototype
    console.log( newObj.prototype ); //MyClass.sayHello is not a function 实例没有prototype
    console.log( MyClass.prototype ); //[Object Object]   {sayHello函数}和constructor
    alert( MyClass.prototype.constructor ) //指向了函数
    console.log( MyClass.prototype.constructor.country ); //china



你可能感兴趣的:(js 的 构造函数)