对象不能访问JS构造函数
Object cannot access JS constructor function
我是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 getSuit = function(){
return this.suit;
};
}
var test = new Card(10, 1);
test.getNumber();
我不能找出错误可能是什么。需要一些帮助。
因为您没有将函数附加到指向构造函数实例的this
。附在this
上的属性和函数就像经典OOP中的"公共"属性和方法。
同样,变量number
和suit
存在于实例中,但不是作为实例的属性。它们无法通过this
访问,因为您没有附加它们。它们就像经典OOP中的"私有变量"。
但是因为你的getter和变量在同一个作用域中(构造函数Card
),所以它们可以访问变量,就像经典OOP的"getter"answers"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();
你想
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();
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();
相关文章:
- 从js引擎的角度来看闭包和构造函数是如何工作的
- 如何从构造函数中调用js原型方法
- 在Meteor:p5.AudioIn()中集成p5.sound.js不是构造函数
- JS构造函数
- 使用sinon.js创建一个“;“间谍对象”;使用基于真实构造函数/原型的间谍方法
- JS构造函数的原型属性与其原型之间的区别
- 如何在node.js中查找进入构造函数的参数数量
- js.erb文件中提供给RegExp构造函数的标志无效
- JS在构造函数中使用get
- 在OPP JS中,您可以从构造函数访问原型函数内部声明的方法
- 在原型.js中复制构造函数
- JS使用构造函数在对象中创建对象
- 扩展 pixi.js在构造函数中对访问父的属性进行精灵化
- 主干.js - n捕获异常:语法错误:函数构造函数:无法编译函数
- js 中的构造函数
- JS私有方法不会在每个构造函数调用时重新定义
- 当我尝试在 ace.js 中创建 Range 对象时,抛出“非法构造函数”错误
- 主干.js自定义构造函数
- JS构造函数中“this”的值返回“undefined”
- JS构造函数不起作用