Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的自定义随机数生成器_Javascript_Oop - Fatal编程技术网

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); //保留生成的

我不熟悉用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);
//保留生成的数字数组
如果(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版本,但我不会说它的工作原理完全相同,不会。