JavaScript中的自定义随机数生成器
我不熟悉用JavaScript创建对象。我需要制作一个不会经常重复的随机数生成器(我没有在下面的代码段中尝试实现这一部分)。如何从JavaScript中的自定义随机数生成器,javascript,oop,Javascript,Oop,我不熟悉用JavaScript创建对象。我需要制作一个不会经常重复的随机数生成器(我没有在下面的代码段中尝试实现这一部分)。如何从RNG.prototype.rand中的函数RNG(n)访问n?在我的编辑器中,它以我现在编写的方式显示为无法访问。我也不确定是否应该从RNG或RNG…rand()返回: 函数RNG(n){ 这个,n=n; } RNG.prototype.rand=函数(){ var-arr=[]; var num=Math.floor(Math.rand()*n); //保留生成的
RNG.prototype.rand
中的函数RNG(n)
访问n
?在我的编辑器中,它以我现在编写的方式显示为无法访问。我也不确定是否应该从RNG
或RNG…rand()返回:
函数RNG(n){
这个,n=n;
}
RNG.prototype.rand=函数(){
var-arr=[];
var num=Math.floor(Math.rand()*n);
//保留生成的数字数组
如果(num
在您的代码中,您想要这个.n
而不是n
。与某些语言不同,“this”不是假定的
为了回答你的另一个问题,按照这里设置的方式,你想从rand
返回,不过坦率地说,我不明白你为什么不把n
作为rand()的参数
而不是用构造函数之类的东西来创建一个有状态的对象。在你的代码中,你想要这个.n
而不是n
。与某些语言不同,“this”不是假定的
为了回答你的另一个问题,按照这里设置的方式,你想从rand
返回,不过坦率地说,我不明白你为什么不把n
作为rand()的参数
而不是使用构造函数等创建有状态对象。此.n
是在实例化实例时创建的实例属性:
function RNG(n) {
this.n = n;
}
var rng = new RNG(5);
console.log(rng.n); // 5
RNG.prototype.rand
是一种实例方法。在方法中,如果要引用实例本身,也应该使用this
function RNG(n) {
this.n = n;
}
RNG.prototype.method = function() {
console.log(this.n);
};
var rng = new RNG(7);
rng.method(); // 7, within this method `this` is `rng`, so `this.n` gives you `rng.n`
如果您尝试此代码:
function RNG(n) {
this.n = n;
}
RNG.prototype.method = function() {
var n = 3;
console.log(n, this.n);
};
var rng = new RNG(7);
rng.method(); // 3, 7
这里没有this.
,n
实际上是试图得到一个用var n=3定义的变量代码>。它与实例属性rng.n
最后,如果不定义n
:
function RNG(n) {
this.n = n;
}
RNG.prototype.method = function() {
console.log(n);
};
var rng = new RNG(7);
rng.method(); // ReferenceError: n is not defined
此.n
是在实例化实例时创建的实例属性:
function RNG(n) {
this.n = n;
}
var rng = new RNG(5);
console.log(rng.n); // 5
RNG.prototype.rand
是一种实例方法。在方法中,如果要引用实例本身,也应该使用this
function RNG(n) {
this.n = n;
}
RNG.prototype.method = function() {
console.log(this.n);
};
var rng = new RNG(7);
rng.method(); // 7, within this method `this` is `rng`, so `this.n` gives you `rng.n`
如果您尝试此代码:
function RNG(n) {
this.n = n;
}
RNG.prototype.method = function() {
var n = 3;
console.log(n, this.n);
};
var rng = new RNG(7);
rng.method(); // 3, 7
这里没有this.
,n
实际上是试图得到一个用var n=3定义的变量代码>。它与实例属性rng.n
最后,如果不定义n
:
function RNG(n) {
this.n = n;
}
RNG.prototype.method = function() {
console.log(n);
};
var rng = new RNG(7);
rng.method(); // ReferenceError: n is not defined
我正在做一个关于代码战的练习,它就是这样给出的。如果你能想到这种方法可能带来的任何好处,我很乐意听到。Jscript中的“this”与Java中的“this”工作原理相同吗?通常,如果您有更多的数据要在多个函数中共享,那么您会使用这种模式这个
类似于Java版本,但我不会说它的工作原理完全相同,不。我正在做一个关于代码战的练习,这就是它的给出方式。如果你能想到这种方法可能带来的任何好处,我很乐意听到。Jscript中的“this”与Java中的“this”工作原理相同吗?通常,如果您有更多的数据要在多个函数中共享,那么您会使用这种模式这个
类似于Java版本,但我不会说它的工作原理完全相同,不会。