这是一个场景。我有一个名为business and business的类,有一个像food,娱乐等的域。商业类有id,name和域名引用等属性。我将创建不同的域类,如食品,娱乐和服装。每个域类都有自己的属性(很少有可能是常见的)。 如果它是Java,我可以简单地使用Object类或一些接口,这将允许我在运行时提供任何这些类型的引用。 但我不知道如何在Javascript中实现这一点。在这方面,任何帮助都将受到赞赏。
答案 0 :(得分:1)
如果你的意思是你将使用什么类型的变量引用这些类的实例,答案是:无,JavaScript是一种松散类型的语言。您只需使用变量/函数参数/属性包含的内容:
function Foo() {
this.name = "foo";
}
function Bar() {
this.name = "bar";
}
function Bingo() {
this.name = "bingo";
}
function use(x) { // <== No type on `x`
console.log(x.name);
}
use(new Foo());
use(new Bar());
use(new Bingo());
或使用ES2015 +
class Foo {
constructor() {
this.name = "foo";
}
}
class Bar {
constructor() {
this.name = "bar";
}
}
class Bingo {
constructor() {
this.name = "bingo";
}
}
function use(x) { // <== No type on `x`
console.log(x.name);
}
use(new Foo());
use(new Bar());
use(new Bingo());
答案 1 :(得分:0)
Javascript
中不需要单独的变量类型。与Javascript
(和令人敬畏的)
Java
非常不同
var a = 10;
var b = "PieChuckerr Here!"
var isMale = true;
var countriesLivedIn = ['US', 'UK', 10, 12]; // country_code as well as name
var doCall = function(){}
var obj = {
eyecolor: "blue",
age: 30
}
检查此示例Varible可以保存任何数据类型。
答案 2 :(得分:0)
如果您来自Java,这里有一个从Java迁移到JavaScript的例子
Java代码:
public class Cellule {
// properties
private String name = "";
private Owner owner = null;
// constructor
public Cellule(String name){
this.setName(name);
}
// méthods --> setter and getter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Owner getOwner() {
return owner;
}
public void setOwner(Owner owner) {
this.owner = owner;
}
}
public class Owner
{
// properties
private ArrayList<Cellule> cellules;
// constructor
public Owner(){
this.cellules = new ArrayList<Cellule>();
}
// methods
public int getSize(){
return this.cellules.size();
}
public int addElement(Cellule e){
if(e.getOwner() != this)
e.setOwner(this);
this.cellules.add(e);
return this.cellules.indexOf(e);
}
public Cellule getElementAtIndex(int index){
return this.cellules.get(index);
}
}
用于执行相同操作的JavaScript(ES6)代码:
class Cellule {
constructor(name){
// properties
this.name = name;
this.owner = null;
}
}
class Owner{
constructor(){
// properties
this.cellules = [];
}
// methods
getSize(){
return this.cellules.length;
}
addElement(cellule){
if(cellule.owner != this)
cellule.owner = this;
return this.cellules.push(cellule);
}
getElementAtIndex(index){
return this.cellules[index];
}
}
答案 3 :(得分:0)
请注意,您不能使用ES6语法创建私有成员(属性或方法),但您可以使用ES5语法,如下所示:
var MyClass = function() {
var _name = "John"; // private property
this.getName = function() { // public method
return _name; // which returns the private property
}
};