JavaScript";“类”;没有属性

JavaScript";“类”;没有属性,javascript,Javascript,当我这样做的时候 var classTest = Bar(myID); classTest.Test(); 当使用下面的代码时,它返回并说classTest没有属性。我似乎也看不懂classTest.id 不起作用,因为这里的“this”显然是指Foo,而不是Bar Foo.prototype.Bar=function(id) { var id = id; this.Test=function() { print("test"); } };

当我这样做的时候

var classTest = Bar(myID);
classTest.Test();
当使用下面的代码时,它返回并说
classTest没有属性
。我似乎也看不懂
classTest.id

不起作用,因为这里的“this”显然是指Foo,而不是Bar

Foo.prototype.Bar=function(id)
{
    var id = id;

    this.Test=function()
    {
        print("test");
    }
};
这也不行

Foo.prototype.Bar=function(id)
{
        var id = id;
};

Bar.Test=function() 
{
        print("test");
};
Bar.prototype.Test=function(id)


Foo.prototype.Bar.prototype.Test=function(id)也不是

JavaScript不像其他OOP语言那样使用类,而是使用rater原型

“类”原型中的任何内容都可用于该“类”的所有实例,即使它是在“类”的实例创建之后添加的

“类”本身实际上只是一个函数。但当使用“new”操作符调用时,它的行为将类似于大多数其他OOP的类构造函数

在“类”和构造函数的每个方法中,都会有一个关键字(
this
)作为该实例的句柄

var Bar = function() {
  // Im the constructor
}
Bar.prototype.setName = function(name) {
  // Im a method on the instances of Bar
  // We assing our property `name` with the value from my first argument
  this.name = name;
}
Bar.prototype.getName = function(name) {
  return this.name;
}

var bar = New Bar();
bar.setName('John');
console.log(bar.getName()); // John

这可能不会直接回答你的问题,但如果你想得够久,它可能最终会回答你的问题


JavaScript中的继承基于遍历“原型链”。尽管看起来很奇怪,原型可以有原型。尝试访问属性时,将检查原型。如果在该原型中找不到该属性,则将检查该原型的原型,依此类推,直到不再有原型为止。因此,为了创建一个“子类”,从它的“超类”继承属性和方法,您必须执行以下操作:

var Foo = function() {
  // Foo's constructor, remember to call your supers as well:
  Bar.call(this);
}
Foo.prototype = Object.create(Bar.prototype);
Foo.prototype.fooMethod = function() {
  return -1;
}

var foo = new Foo();
foo.setName('John');
foo.getName(); // John
foo.fooMethod(); // -1

您可以使用我们上面学到的内容在实例中创建实例:

当我们创建一个Foo(
Foo
)实例时,将创建一个Bar(
Foo.Bar
)实例:


JavaScript不像其他OOP语言那样使用类,而是使用rater原型

“类”原型中的任何内容都可用于该“类”的所有实例,即使它是在“类”的实例创建之后添加的

“类”本身实际上只是一个函数。但当使用“new”操作符调用时,它的行为将类似于大多数其他OOP的类构造函数

在“类”和构造函数的每个方法中,都会有一个关键字(
this
)作为该实例的句柄

var Bar = function() {
  // Im the constructor
}
Bar.prototype.setName = function(name) {
  // Im a method on the instances of Bar
  // We assing our property `name` with the value from my first argument
  this.name = name;
}
Bar.prototype.getName = function(name) {
  return this.name;
}

var bar = New Bar();
bar.setName('John');
console.log(bar.getName()); // John

这可能不会直接回答你的问题,但如果你想得够久,它可能最终会回答你的问题


JavaScript中的继承基于遍历“原型链”。尽管看起来很奇怪,原型可以有原型。尝试访问属性时,将检查原型。如果在该原型中找不到该属性,则将检查该原型的原型,依此类推,直到不再有原型为止。因此,为了创建一个“子类”,从它的“超类”继承属性和方法,您必须执行以下操作:

var Foo = function() {
  // Foo's constructor, remember to call your supers as well:
  Bar.call(this);
}
Foo.prototype = Object.create(Bar.prototype);
Foo.prototype.fooMethod = function() {
  return -1;
}

var foo = new Foo();
foo.setName('John');
foo.getName(); // John
foo.fooMethod(); // -1

您可以使用我们上面学到的内容在实例中创建实例:

当我们创建一个Foo(
Foo
)实例时,将创建一个Bar(
Foo.Bar
)实例:


JavaScript不像其他OOP语言那样使用类,而是使用rater原型

“类”原型中的任何内容都可用于该“类”的所有实例,即使它是在“类”的实例创建之后添加的

“类”本身实际上只是一个函数。但当使用“new”操作符调用时,它的行为将类似于大多数其他OOP的类构造函数

在“类”和构造函数的每个方法中,都会有一个关键字(
this
)作为该实例的句柄

var Bar = function() {
  // Im the constructor
}
Bar.prototype.setName = function(name) {
  // Im a method on the instances of Bar
  // We assing our property `name` with the value from my first argument
  this.name = name;
}
Bar.prototype.getName = function(name) {
  return this.name;
}

var bar = New Bar();
bar.setName('John');
console.log(bar.getName()); // John

这可能不会直接回答你的问题,但如果你想得够久,它可能最终会回答你的问题


JavaScript中的继承基于遍历“原型链”。尽管看起来很奇怪,原型可以有原型。尝试访问属性时,将检查原型。如果在该原型中找不到该属性,则将检查该原型的原型,依此类推,直到不再有原型为止。因此,为了创建一个“子类”,从它的“超类”继承属性和方法,您必须执行以下操作:

var Foo = function() {
  // Foo's constructor, remember to call your supers as well:
  Bar.call(this);
}
Foo.prototype = Object.create(Bar.prototype);
Foo.prototype.fooMethod = function() {
  return -1;
}

var foo = new Foo();
foo.setName('John');
foo.getName(); // John
foo.fooMethod(); // -1

您可以使用我们上面学到的内容在实例中创建实例:

当我们创建一个Foo(
Foo
)实例时,将创建一个Bar(
Foo.Bar
)实例:


JavaScript不像其他OOP语言那样使用类,而是使用rater原型

“类”原型中的任何内容都可用于该“类”的所有实例,即使它是在“类”的实例创建之后添加的

“类”本身实际上只是一个函数。但当使用“new”操作符调用时,它的行为将类似于大多数其他OOP的类构造函数

在“类”和构造函数的每个方法中,都会有一个关键字(
this
)作为该实例的句柄

var Bar = function() {
  // Im the constructor
}
Bar.prototype.setName = function(name) {
  // Im a method on the instances of Bar
  // We assing our property `name` with the value from my first argument
  this.name = name;
}
Bar.prototype.getName = function(name) {
  return this.name;
}

var bar = New Bar();
bar.setName('John');
console.log(bar.getName()); // John

这可能不会直接回答你的问题,但如果你想得够久,它可能最终会回答你的问题


JavaScript中的继承基于遍历“原型链”。尽管看起来很奇怪,原型可以有原型。尝试访问属性时,将检查原型。如果在该原型中找不到该属性,则将检查该原型的原型,依此类推,直到不再有原型为止。因此,为了创建一个“子类”,从它的“超类”继承属性和方法,您必须执行以下操作:

var Foo = function() {
  // Foo's constructor, remember to call your supers as well:
  Bar.call(this);
}
Foo.prototype = Object.create(Bar.prototype);
Foo.prototype.fooMethod = function() {
  return -1;
}

var foo = new Foo();
foo.setName('John');
foo.getName(); // John
foo.fooMethod(); // -1

您可以使用我们上面学到的内容在实例中创建实例:

当我们创建一个Foo(
Foo
)实例时,将创建一个Bar(
Foo.Bar
)实例:


您没有使用新操作符,
classTest