Javascript 对象无法访问JS构造函数
我是JS的新手。我正在学习JS OOP的概念。我试图使用构造函数在JS中创建私有变量。但是当我尝试使用getter访问这些值时,我得到一个错误“TypeError:“undefined”不是函数Javascript 对象无法访问JS构造函数,javascript,Javascript,我是JS的新手。我正在学习JS OOP的概念。我试图使用构造函数在JS中创建私有变量。但是当我尝试使用getter访问这些值时,我得到一个错误“TypeError:“undefined”不是函数 function Card(n,s) { var number = n; var suit = s; //getters var getNumber = function(){ return this.number; }; var
function Card(n,s) {
var number = n;
var suit = s;
//getters
var getNumber = function(){
return this.number;
};
var getSuit = function(){
return this.suit;
};
}
var test = new Card(10, 1);
test.getNumber();
我不知道可能是什么错误。需要一些帮助。因为您没有将函数附加到指向构造函数实例的
上。此
附加的属性和函数类似于经典OOP中的“公共”属性和方法
function Card(n, s) {
var number = n;
var suit = s;
//getters
this.getNumber = function () {
return number;
};
this.getSuit = function () {
return suit;
};
}
var test = new Card(10, 1);
test.getNumber();
此外,变量number
和suit
存在于实例内部,但不作为实例的属性。无法通过此
访问它们,因为您没有附加它们。它们的行为类似于经典OOP中的“私有变量”
但是,由于getter与变量位于同一范围内(构造函数卡),因此它们可以访问变量,就像经典OOP中的“getter”和“setter”一样
function Card(n, s) {
var number = n;
var suit = s;
//getters
this.getNumber = function () {
return number;
};
this.getSuit = function () {
return suit;
};
}
var test = new Card(10, 1);
test.getNumber();
因为您没有将函数附加到指向构造函数实例的this
。此
附加的属性和函数类似于经典OOP中的“公共”属性和方法
function Card(n, s) {
var number = n;
var suit = s;
//getters
this.getNumber = function () {
return number;
};
this.getSuit = function () {
return suit;
};
}
var test = new Card(10, 1);
test.getNumber();
此外,变量number
和suit
存在于实例内部,但不作为实例的属性。无法通过此
访问它们,因为您没有附加它们。它们的行为类似于经典OOP中的“私有变量”
但是,由于getter与变量位于同一范围内(构造函数卡),因此它们可以访问变量,就像经典OOP中的“getter”和“setter”一样
function Card(n, s) {
var number = n;
var suit = s;
//getters
this.getNumber = function () {
return number;
};
this.getSuit = function () {
return suit;
};
}
var test = new Card(10, 1);
test.getNumber();
getter必须是成员函数,即必须在this
对象上定义它
在您的情况下,这些getter对于构造函数是私有的,在构造函数之外是无法访问的
function Card(n,s) {
var number = n;
var suit = s;
//getters
this.getNumber = function(){
return this.number;
};
this.getSuit = function(){
return this.suit;
};
}
var test = new Card(10, 1);
test.getNumber();
getter必须是成员函数,即必须在this
对象上定义它
在您的情况下,这些getter对于构造函数是私有的,在构造函数之外是无法访问的
function Card(n,s) {
var number = n;
var suit = s;
//getters
this.getNumber = function(){
return this.number;
};
this.getSuit = function(){
return this.suit;
};
}
var test = new Card(10, 1);
test.getNumber();
你想要
function Card(n,s) {
this.number = n;
this.suit = s;
}
//getters
Card.prototype.getNumber = function(){
return this.number;
};
Card.prototype.getSuit = function(){
return this.suit;
};
var test = new Card(10, 1);
test.getNumber();
你想要
function Card(n,s) {
this.number = n;
this.suit = s;
}
//getters
Card.prototype.getNumber = function(){
return this.number;
};
Card.prototype.getSuit = function(){
return this.suit;
};
var test = new Card(10, 1);
test.getNumber();
var
在函数作用域中声明一个变量。推荐阅读:您应该更喜欢基于原型的继承,而不是现在的继承,因为它更节省内存var
在函数范围中声明变量。推荐阅读:您应该更喜欢基于原型的继承,而不是现在的继承,因为它更节省内存