为什么我的人在调用一个自我方法时不会说“你好”?如何解决这个问题?
var Person = (function () {
function Person() {
this.prototype.say();
}
Person.prototype.say = function() {
alert("hello");
}
return Person;
})();
var person = new Person();
答案 0 :(得分:4)
要调用current
对象上的函数,您不应使用prototype
,只需将其调用(this.say()
)。
var Person = (function() {
function Person() {
this.say();
}
Person.prototype.say = function() {
alert("hello");
}
return Person;
})();
var person = new Person();
要在javascript中了解有关OOP的更多信息,您可以阅读MDN
上的文档关于inheritance
和prototype chain
来自@FelixKling的好消息
对象
this
指的是没有prototype
属性。只有函数具有原型属性。
答案 1 :(得分:1)
isvforall的解决方案很好。
关键是'prototype'定义了你在Person()构造函数中“构造”的对象可用的函数 - 称为'this。'。
原型是使用Person()构造的所有对象的共享基础定义。在Person()构造函数和其他原型方法中,实例本身用'this'引用。
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain等文档以供参考。