js面向对象编程有关问题,关于私有共有成员
js面向对象编程问题,关于私有共有成员
之前我是这样定义一个对象的:
后来听说,每创建一个对象它都会创建独立的成员,如果是字段还行,但是方法的话就没必要
于是,查了下资料,有函数原型这个概念,并可以用混合构造函数/函数原型的方式定义一个对象,于是修改后:
引发的问题是,外部定义的方法都是公有,而且不能访问私有字段age
难道js对象不能定义私有的成员???
------解决方案--------------------
构造函数里面定义的局部变量就是私有成员
比如Man函数中的age
你这儿出现undefind不是因为不能访问age,是因为age变量没有赋值
js里面没有赋值的变量值就是undefind,所以给个初值就有了
------解决方案--------------------
还是没有看明白protype属性啊,那不是私有的,认真学学js基础知识吧
http://blog.****.net/ismycxp/article/details/5714291
之前我是这样定义一个对象的:
- JScript code
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();
后来听说,每创建一个对象它都会创建独立的成员,如果是字段还行,但是方法的话就没必要
于是,查了下资料,有函数原型这个概念,并可以用混合构造函数/函数原型的方式定义一个对象,于是修改后:
- JScript code
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对象不能定义私有的成员???
------解决方案--------------------
构造函数里面定义的局部变量就是私有成员
比如Man函数中的age
你这儿出现undefind不是因为不能访问age,是因为age变量没有赋值
js里面没有赋值的变量值就是undefind,所以给个初值就有了
------解决方案--------------------
还是没有看明白protype属性啊,那不是私有的,认真学学js基础知识吧
http://blog.****.net/ismycxp/article/details/5714291