我有个问题想请教下:
我现在进行面向对象设计时有个疑惑,我们定义一个类:
function A(){
}
此时我想给A增加属性:
1. function A(){
A.prop = xxx
}
2. A.prototype.prop = xxx
我不知道这两种方式孰优孰劣,在什么情况下使用哪种方式为佳?然后我想定义一个get的方法,用于返回A中的私有属性
A的私有属性有两种定义方式:
1. function A(){
this._private = xxx => 开发人员协定加“_”的为私有属性,实质上是公共属性
}
2. function A(){
var _private = xxx => 完全私有属性
}
此时定义get方法,针对第一种情况为
A.prototype.getPrivateProp = function(){return this._private;}
针对第二种情况为
function A(){
var _private = xxx => 完全私有属性
this.getPrivateProp = function() {return _private;}
}
那边以上两种处理方式孰优孰劣,什么情况下使用哪种方式合适呢?还有就是我把公共方法定义在A类里和定义在A的prototype上有什么区别吗?
我现在进行面向对象设计时有个疑惑,我们定义一个类:
function A(){
}
此时我想给A增加属性:
1. function A(){
A.prop = xxx
}
2. A.prototype.prop = xxx
我不知道这两种方式孰优孰劣,在什么情况下使用哪种方式为佳?然后我想定义一个get的方法,用于返回A中的私有属性
A的私有属性有两种定义方式:
1. function A(){
this._private = xxx => 开发人员协定加“_”的为私有属性,实质上是公共属性
}
2. function A(){
var _private = xxx => 完全私有属性
}
此时定义get方法,针对第一种情况为
A.prototype.getPrivateProp = function(){return this._private;}
针对第二种情况为
function A(){
var _private = xxx => 完全私有属性
this.getPrivateProp = function() {return _private;}
}
那边以上两种处理方式孰优孰劣,什么情况下使用哪种方式合适呢?还有就是我把公共方法定义在A类里和定义在A的prototype上有什么区别吗?
var obj2 = new A();
obj1.prop = 2;
alert(obj2.prop); //弹出2对吗?
100个人的团队,用prototype好处你就看到了。不用写一个方法就要写一次这个对象吧。最后怎么整合是不?
直接在构造函数中定义就不会出现这种情况
虽然说把方法和字段写在构造函数中可以真正的实现private ,而在原型中只能加个“_”来说明
但javascript本就是弱类型语言,没有那些静态语言这么强的约束力和易读性,所以是不是真正实现private也无所谓,明白他是私有的就行了。什么样的用法好完全看自己的习惯