我有一个原型:
var myClass = function() {};
我在该课上有一个方法:
myClass.prototype.method1() = function() {
return x;
}
然后我有第二种方法,我以相同的方式声明,但我想在其中访问method1()
的结果。但这不起作用,我不确定为什么......
myClass.prototype.method2() = function() {
return myClass.method1();
}
我得 TypeError:myClass.method1不是函数
任何人都可以指出这在语法上/概念上有什么不对吗?并建议任何改进?
此外,我不是100%我在这个例子中正确使用术语'class'和'prototype'。如果任何人都可以纠正这个术语,或者指出与这种过程相关的任何其他术语,我会很感激!
提前致谢。
答案 0 :(得分:1)
var myClass = function() {};
这是一个构造函数而不是原型。这是一个解释差异的quick read。
您可以使用this
来呼叫它。这是刷新的best place。
const MyClass = function() {};
MyClass.prototype.method1 = function() {
return x;
}
MyClass.prototype.method2 = function() {
return this.method1();
}
此外,method1
和method2
答案 1 :(得分:0)
因为(使用粗略的OO术语),method1()
是实例方法,并且您尝试将其称为 static < / em>方法。
const MyClass = function() {}; // MyClass is a constructor
MyClass.prototype.method1() = function() {
return x;
}
MyClass.prototype.method2() = function() {
return this.method1(); // Call it as an instance
}
或者,或者:
const MyClass = function() {};
MyClass.method1() = function() { // "static" method
return x;
}
MyClass.prototype.method2() = function() {
return MyClass.method1(); // Call it as a "static"
}
值得注意的是,这个术语具有误导性,没有静态或实例方法(实际上,JavaScript中没有方法,只有函数和属性可以保存对函数的引用)。
答案 2 :(得分:0)
JS oop在公共方法和特权方法之间存在一些差异。
MyClass.method1()
是一种静态方法调用。它就像一个普通函数,与任何myClass对象实例都没有关系。
所以你需要使用Full命名空间来调用它:
count