之前我是这样定义一个对象的:
function Man(name,age) {
//公有字段
this.Name = name;
//私有字段
var age;
//私有方法
function show() {
alert(gm.Name + " is " + age + " years old");
}
//公有方法
this.Show = function () {
show();
};
var gm = this;
}
var m = new Man('jack', 10);
m.Show();
后来听说,每创建一个对象它都会创建独立的成员,如果是字段还行,但是方法的话就没必要于是,查了下资料,有函数原型这个概念,并可以用混合构造函数/函数原型的方式定义一个对象,于是修改后:function Man(name, age) {
//公有字段
this.Name = name;
//私有字段
var age;
}
//本来是私有方法
Man.prototype.show = function () {
alert(this.Name + " is " + age + " years old");
}
//公有方法
Man.prototype.Show = function () {
this.show();
};
引发的问题是,外部定义的方法都是公有,而且不能访问私有字段age难道js对象不能定义私有的成员???
function Man(name,age) {
//公有字段
this.Name = name;
//私有字段
var age;
//私有方法
function show() {
alert(gm.Name + " is " + age + " years old");
}
//公有方法
this.Show = function () {
show();
};
var gm = this;
}
var m = new Man('jack', 10);
m.Show();
后来听说,每创建一个对象它都会创建独立的成员,如果是字段还行,但是方法的话就没必要于是,查了下资料,有函数原型这个概念,并可以用混合构造函数/函数原型的方式定义一个对象,于是修改后:function Man(name, age) {
//公有字段
this.Name = name;
//私有字段
var age;
}
//本来是私有方法
Man.prototype.show = function () {
alert(this.Name + " is " + age + " years old");
}
//公有方法
Man.prototype.Show = function () {
this.show();
};
引发的问题是,外部定义的方法都是公有,而且不能访问私有字段age难道js对象不能定义私有的成员???
解决方案 »
- 简单的js幻灯片效果问题
- 正则表达式高手进来帮忙啊!
- 一个奇怪的问题,提交数据后点后退,页面上的源码变少了。
- 如何在Alpha形成的透明效果上添加亮点
- 请问 javascript number类型能表示的最大值是多少?
- 哪位对JS的$.post很熟?请帮我看看这段程序是什么意思,谢谢++++++++++++++++++
- 如何让window.open打开的窗口位于顶端?
- 还是上次的问题。如何通过JS来定位Windows Media Player和Real Player?
- help:在javascript中关于页面传值的问题
- 做个中国象棋,遇到瓶颈了
- 100分求助:Ext.Ajax.request POST不发送?
- Ext 中 datefield日期控件 获取值问题
比如Man函数中的age你这儿出现undefind不是因为不能访问age,是因为age变量没有赋值
js里面没有赋值的变量值就是undefind,所以给个初值就有了
http://blog.csdn.net/ismycxp/article/details/5714291