JAVASCRIPT实现静态对象、静态方法和静态属性

/**
 * Created by kevinlou on 9/13/16.
 */

//Javascript语言的面向对象特征很弱 , 其他面向对象语言在创建类时只要使用关键字static即可指定类为静态类 , Javascript没有提供static这样的关键字 , 要让Javascript也具有 “ 静态 ” 特性只有靠一些 “ 奇技淫巧 ” 了 。

//代码中列举了两种静态方法 / 属性的实现方式 , 一种是静态类的静态方法和属性 , 另一种是非静态类的静态方法和属性 , 代码说明都写在每行的代码注释里 , 这里就不重复了 。

/****************************************

 * 方法一

 * 类、方法、属性都为静态类型

 * 不能创建实例

 *****************************************/

var Time = {
    today: '2009-3-8',
    weather: 'rain',
    show: function () {
        alert('Today is ' + this.today);
    }
};


//静态对象可直接使用,无需创建实例

alert('It is ' + Time.weather + ' today.');
Time.show();


//下面的代码会出错,因为静态类不能创建实例

//var t = new Time();

//t.show();


/****************************************

 * 方法二

 * 普通对象,同时拥有静态和非静态属性、方法

 * 可以用实例化

 * 注意:

 *   1.静态方法/属性使用类名访问

 *   2.非静态方法/属性使用实例名访问

 *****************************************/

function Person(name) {
    //非静态属性
    this.name = name;

    //非静态方法
    this.show = function () {
        alert('My name is ' + this.name + '.');
    }

}

//添加静态属性,人都是一张嘴
Person.mouth = 1;

//添加静态方法,哇哇大哭
Person.cry = function () {
    alert('Wa wa wa …');
};

//使用prototype关键字添加非静态属性,每个人的牙可能不一样多
Person.prototype.teeth = 32;


//非静态方法必须通过类的实例来访问
var me = new Person('Zhangsan');

//使用非静态方法、属性
me.show();
alert('I have ' + me.teeth + ' teeth.');

//使用静态方法、属性
Person.cry();
alert('I have ' + Person.mouth + ' mouth.');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值