如何正确设置javascript原型
我得到了下面的代码片段,想知道为什么没有设置原型。看起来getCompany方法正在重写getName方法。这是因为return子句返回JSON并覆盖所有其他方法吗?只有当方法名相等时,它才应该重写原型函数。我需要在“返回表单”中写入,以仅公开某些方法如何正确设置javascript原型,javascript,prototype,Javascript,Prototype,我得到了下面的代码片段,想知道为什么没有设置原型。看起来getCompany方法正在重写getName方法。这是因为return子句返回JSON并覆盖所有其他方法吗?只有当方法名相等时,它才应该重写原型函数。我需要在“返回表单”中写入,以仅公开某些方法 Person = function(name) { var name = name; return { getName: function() {return this.name;} }; }; SecondPers
Person = function(name) {
var name = name;
return {
getName: function() {return this.name;}
};
};
SecondPerson = function(name) {
this.name = name;
return {
getCompany: function(){alert("lolz");}
};
}
SecondPerson.prototype= new Person();
SecondPerson.prototype.constructor = SecondPerson;
var tom = new SecondPerson("Tom");
alert(tom.getName());
这是因为return子句返回JSON并覆盖所有其他方法吗
一个“JS对象文字”,但是是的
我需要在“返回表单”中写入,以仅公开某些方法
不,你没有。要仅公开某些属性,请仅在实例上放置某些方法(this
在构造函数中):
此外,您似乎混淆了变量和属性-请参阅
现在,如果我们解决了这个问题,问题就来了。你为了创建特定于实例的属性,必须在新实例上显式应用父构造函数
function SecondPerson(name) {
Person.call(this, name);
this.getCompany = function(){alert("lolz");}; // might be defined on the prototype
}
SecondPerson.prototype= Object.create(Person.prototype);
SecondPerson.prototype.constructor = SecondPerson;
function SecondPerson(name) {
Person.call(this, name);
this.getCompany = function(){alert("lolz");}; // might be defined on the prototype
}
SecondPerson.prototype= Object.create(Person.prototype);
SecondPerson.prototype.constructor = SecondPerson;