Js OOP:来自 class 的私有变量
Js OOP: private variable from a class
谁能告诉我为什么要打印 'undefined'?
function Person(first,last,age) {
this.firstname = first;
this.lastname = last;
this.age = age;
var bankBalance = 7500;
}
// create your Person
var john = new Person ('John','Doe',33);
// try to print his bankBalance
document.write (john.bankBalance);
在最后一行我想打印 john.bankBalance 即 7500。
bankBalance 如您所写,它的范围仅限于构造函数。如果你想将它作为实例变量访问,你需要像 this.firstname
等那样声明它。阿尔。
bankBalance 仅在函数范围内可用。如果您想公开访问,您应该像定义名字和姓氏一样使用 "this" 进行定义。
由于 bankBalance
的范围仅在构造函数中,您需要添加 this
。你可以这样做:
this.bankBalance = 7500;
或者,您可以像这样为 bankBalance
设置 getter/setter:
this.getBalance = function() {
return bankBalance;
}
this.setBalance = function(balance) {
bankBalance = balance;
}
这里是 JSFiddle 演示了局部变量 bankBalance
.
的 getter 和 setter 函数
这是另一个 JSFiddle,带有一个 'public' bankBalance
变量,可以作为实例变量访问。
这是因为 Javascript 的一个特性,称为闭包。这基本上意味着如果对象是嵌套的,那么内部对象只能访问外部对象的变量。通过使用 this 关键字,您实际上使变量成为该对象的 属性。使用 var 声明的变量将无法被布局了该方法的对象访问。如需有趣的阅读,请查看此 link
http://javascript.crockford.com/private.html
这是一个对象示例,其中包含一个私有变量和一些 public 方法以及一个 属性。这些特性很有用,因为它们限制了对象的使用。在下面的这个例子中,我们可能不希望开发人员篡改数组,所以我们可能只给他们添加和删除的便利,他们只能看到偶数索引:-
function SpecialArray() {
var _array = [];
this.length = _array.length;
this.add = function(stuff) {
// add some stuff to it
}
this.remove = function(stuff) {
// take some stuff out of it
}
this.displayEvenNumbers = function(){
for (var i=0; i< _array.length ; i+=2){
console.log(_array[i]);
}
}
}
谁能告诉我为什么要打印 'undefined'?
function Person(first,last,age) {
this.firstname = first;
this.lastname = last;
this.age = age;
var bankBalance = 7500;
}
// create your Person
var john = new Person ('John','Doe',33);
// try to print his bankBalance
document.write (john.bankBalance);
在最后一行我想打印 john.bankBalance 即 7500。
bankBalance 如您所写,它的范围仅限于构造函数。如果你想将它作为实例变量访问,你需要像 this.firstname
等那样声明它。阿尔。
bankBalance 仅在函数范围内可用。如果您想公开访问,您应该像定义名字和姓氏一样使用 "this" 进行定义。
由于 bankBalance
的范围仅在构造函数中,您需要添加 this
。你可以这样做:
this.bankBalance = 7500;
或者,您可以像这样为 bankBalance
设置 getter/setter:
this.getBalance = function() {
return bankBalance;
}
this.setBalance = function(balance) {
bankBalance = balance;
}
这里是 JSFiddle 演示了局部变量 bankBalance
.
这是另一个 JSFiddle,带有一个 'public' bankBalance
变量,可以作为实例变量访问。
这是因为 Javascript 的一个特性,称为闭包。这基本上意味着如果对象是嵌套的,那么内部对象只能访问外部对象的变量。通过使用 this 关键字,您实际上使变量成为该对象的 属性。使用 var 声明的变量将无法被布局了该方法的对象访问。如需有趣的阅读,请查看此 link
http://javascript.crockford.com/private.html
这是一个对象示例,其中包含一个私有变量和一些 public 方法以及一个 属性。这些特性很有用,因为它们限制了对象的使用。在下面的这个例子中,我们可能不希望开发人员篡改数组,所以我们可能只给他们添加和删除的便利,他们只能看到偶数索引:-
function SpecialArray() {
var _array = [];
this.length = _array.length;
this.add = function(stuff) {
// add some stuff to it
}
this.remove = function(stuff) {
// take some stuff out of it
}
this.displayEvenNumbers = function(){
for (var i=0; i< _array.length ; i+=2){
console.log(_array[i]);
}
}
}