我想要产生一个随机数,下面的这个程序是可以的,我想为什么要用原型对象prototype添加getRandom方法呢?用this就不可以。(我查到说this指向的是window,这点不太理解,那自定义构造函数创建对象中的this也是指向window呢?)
(function (window) {
function Random() {
}
Random.prototype.getRandom=function (min,max) {
return Math.floor(Math.random()*(max-min)+min);
};
//把局部对象暴露给window顶级对象,就成了全局的对象
window.Random=new Random();
})(window);//自调用构造函数的方式,分号一定要加上
console.log(Random.getRandom(1,5));
改成this之后就不可以产生随机数。
(function (window) {
function Random() {
this.getRandom = function (min,max) {
return Math.floor(Math.random()*(max-min)+min);
};
window.Random = new Random();
})(window);
console.log(Random.getRandom(1,5));
改成
this
之后不可以产生随机数?是语法错误吧,少写了一个}
。两种方式的区别:
getRandom
方法是在Random的原型链上的getRandom
方法是在Random的对象上但是你上面的两种写法,效果是一样的,因为
window.Random = new Random()
导致window.Random
是一个单例对象,换成下面的写法也可以: