如何用Javascript写一个Class?

记得前面某次面试被问到此问题,一直以来因为对JS的不重视+一知半解,所以当时就懵了~

最近Google了下,找到以下几种写Class的方式:

1 JS因为不是OO语言,所以没有Class的概念,都是通过ProtoType的方式实现的。

var namedClass = Class.create({
    initialize: function(name) {
        this.name = name;
    }
 
    getName: function() {
        return this.name;
    }
});
var instance = new namedClass('Foobar');

2 也可以这样写

function MyClass(){
}
MyClass.prototype.aFunction(){ 
}
 
var instance = new MyClass();
instance.aFunction();

3 带属性和方法的Class

function MyClass () {
   //reference to this
   var self = this;
   //private member variable
   var privateVar = "My Private Variable";
 
   //public member variable
   this.publicVar = "My Public Variable";
 
   //private member function
   var privateFunction = function () {
      self.publicVar += " Modified By A Private Fucntion";
      alert( self.publicVar );
   }
}
 
//create an instance
var oClass = new MyClass();
 
//run a private member function
oClass.privateFunction();   //private function is undefined
 
//get a private member var
alert( oClass.privateVar );   //private var is undefined

4 带静态变量和静态方法的Class:

function MyClass () {
   //...
}
//declare a static member
MyClass.staticVar = "My static variable";
 
//declare a static function
MyClass.staticFunction = function ( pInput ) {
   return new MyClass( MyClass.staticVar , pInput );
}
//create an instance
var oClass = new MyClass();
//run a static function (NO access to private or public)
oClass.staticFunction( 9 );  //staticFunction is undefined on an instance
//run a privileged member function on the class
MyClass.privilegedFunction();   //The function runs

5 带特权(privileged)变量和方法的Class:

function MyClass () {
   //private member variable
   var privateVar = "My Private Variable";
   //privileged member function
   this.privilegedFunction = function () {
      alert( privateVar );
   }
}
//create an instance
var oClass = new MyClass();
//run a privileged member function
oClass.privilegedFunction();   //Output: alerts the value of the private var

转载于:https://www.cnblogs.com/4kapple/archive/2011/10/14/2212373.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值