this.member = param;
}
这样,如果我们创建一个新对象:
var myContainer = new Container('abc');
这样 myContainer.member 就包含 ‘abc’ 了。
在原型中添加
这个技术通常用于添加公共方法。当一个成员被检索并且没能在对象本身里面找到时,就要从对象的构造函数的原型成员里面寻找。原型机制是用于继承的。也用于节省内存。向一个构造函数生成的所有对象中添加一个方法,只需要向构造函数原型中添加一个函数:
Container.prototype.stamp = function(string){
return this.member + string;
}
因此,我们可以调用这个方法:
myContainer.stamp('def')
结果为 ‘abcdef’。
私有
私有成员是由构造函数生成的。一般构造函数的变量和参数都是私有成员。
function Container(param){
this.member = param;
var secret = 3;
var that = this;
}
这个构造函数生成了3个私有实例变量:param,secret 和 that。它们和对象相关联,但是它们不仅在函数外边不可访问,而且对对象自身的公共方法来说也是不可访问的。它们只可以被私有方法访问。私有方法是构造函数的内部函数。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)function Container(param) {
function dec() {
if (secret 0) {
secret -= 1;
return true;
} else {
return false;
}
}
this.member = param;
var secret = 3;
var that = this;
}
私有方法 dec 检查 secret 实例变量。如果它大于零,将其减一并返回 true。否则返回 false。它可以用作限定对象使用3次。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)按照习惯,我们设置了一个私有的 that 参数。它使得这个对象对于私有方法使可见的。在 ECMAScript 语言规范中,这是一个可行的错误,它使得 this 对于内部函数被不正确地设置。(This is a workaround for an error in the ECMAScript Language Specification which causes this to be set incorrectly for inner functions.)
私有方法不能被公共方法调用。要想使得私有方法有用,需要介绍一下特权方法。
猜你喜欢