javascript面向对象 公有成员,私有成员,静态成员,特权方法的理解

首先简单介绍下javascript的对象:在javascript中对象的种类,Object,Function,还有就是内置对象如String,Array,Date等,在

javascript中内置对象都是继承自Object类。
对象的创建方式
var obj = new Object(); //传统的对象 内置对象也是这么创建的
var obj = {}; //无类型对象


我们通常使用的函数都是Function类的实例. 即我们可以这样定义一个函数对象
var add = new Function("a","b","return a+b");

上面的函数对象等同于
function add(a,b){
return a+b;
}

上面这些是很基本的,如果要了解更深大家可以看javascript的书籍,我就不讲了。

[b]面说下基于函数的面向对象的 成员和方法的访问域的解释.[/b]
//构造函数

function myConstructor(message){
//公有属性
this.myMessage = message;
//私有属性
var separator = '_';
var myOwner = this;
//构造函数内私有方法
function alertMessage(){
alert(myOwner.myMessage);
}
alertMessage();
//特权方法 可以访问构造函数里的私有变量
this.appendToMessage = function(string){
this.myMessage += separator + string;
alertMessage();
}
}

//公有方法

myConstructor.prototype.clearMessage = function(str){
this.myMessage = "";
}

//静态成员
myConstructor.name = "jeff";

//静态方法
myConstructor.alertName = function (){
alert(this.name)
}

var obj = new myConstructor("hello !");
obj.appendToMessage("kate");

这段代码创建了一个构造函数myConstructor,它本身也是一个Function对象的实例。我们在程序中面向对象把它看成构造函数 最后使用的是 myConstructor的实例,javascript中没有类这个概念 ,我们这时候可以把它理解为java中的类

在构造函数中
第1行定义了一个特权属性myMessage([b]实例对象和子类对象实例可以访问[/b])
//创建子类
function sub(message){
//继承 myConstructor
myConstructor.call(this,message);
}
var subObj = new sub("jame");
alert(subObj.myMessage);

第2行定义了两个私有的属性([b]在私有方法和特权方法内可以访问,在原型的公有方法不能访问)[/b],
第4行定义了一个私有方法alertMessage,接着在构造函数里调用
最后定义了appendToMessage特权方法([b]实例对象可以访问和子类对象实例也可以访问如下[/b])
subObj.appendToMessage(" hello");


接着定义了公有方法clearMessage是扩展了原型对象,[b]这样的方法适用于所有new出来的实例及子类的实例[/b]

这里需要注意的是[b]静态成员和静态方法只能当前的实例对象能访问也就是 new myConstructor()的实例对象可以访问,在子类中不允许访问[/b].调用如下
alert(myConstructor.name); //静态成员
myConstructor.alertName(); //静态方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值