我有一个Java类构造函数,其中一部分允许我在实例化时设置变量'key':
public class Note
{
private int key;
public Note()
{
setKey(1 + (int)(Math.random() * 13D));
}
public void setKey(int i)
{
key = (i > 0) & (i <= 13) ? i : 0;
}
}
我想用javascript重写代码,这样我就可以在没有java运行时环境的网页上使用它。我试过了:
var Note = function() {
pitch : setKey( Math.floor(Math.random() * 13) + 1);
}
function setKey(i) {
var key = (i > 0) & (i <= 13) ? i : 0;
console.log("Here key is: " + key); // prints a number
return key;
}
var note1 = new Note();
console.log( note1.pitch); // THIS PRINTS UNDEFINED
关于初始化变量'pitch',我怎么没理解?
非常感谢您的帮助。 杰拉德
答案 0 :(得分:0)
这是一个label,而不是一个属性。
var Note = function() {
this.pitch = setKey( Math.floor(Math.random() * 13) + 1);
};
function setKey(i) {
var key = (i > 0) & (i <= 13) ? i : 0;
console.log("Here key is: " + key); // prints a number
return key;
}
var note1 = new Note();
console.log( note1.pitch); // THIS PRINTS UNDEFINED
&#13;
答案 1 :(得分:0)
如何在不使用ES6功能的情况下执行POO:
function Note() {
// constructor
this.pitch = this.setKey(Math.floor(Math.random() * 13) + 1);
}
Note.prototype.setKey = function(i) {
return (i > 0) & (i <= 13) ? i : 0;
}
var note = new Note();
console.log(note.pitch);
&#13;
如果您想使用ES6功能(例如使用预编译器,如babel):
class Note {
constructor() {
this.pitch = this.setKey(Math.floor(Math.random() * 13) + 1);
}
setKey(i) {
return (i > 0) & (i <= 13) ? i : 0;
}
}
let note = new Note();
console.log(note.pitch);
&#13;