我无法理解为什么此代码无效。我试图在Javascript中理解原型。如果我在函数内声明一个新函数,为什么我无法调用该函数?
<script>
function Person(first) {
this.firstName = first;
}
Person.prototype.name=function() {
this.addLastNameInner=function() {
return this.firstName+" Appended last name";
}
}
Person.prototype.name.addLastName=function() {
return this.firstName+" Appended last name";
}
var pr=new Person('john');
alert(pr.name.addLastNameInner());//Not working
alert(pr.name.addLastName());//working fine
</script>
答案 0 :(得分:0)
要使代码正常工作,您需要更改声明name
的方式:
Person.prototype.name = {
addLastNameInner: function() {
return this.firstName+" Appended last name";
}
};
Person.prototype.name.addLastName = function() {
return this.firstName + " Appended last name";
};
因为您在.name
所做的是,您没有使用new
关键字对其进行初始化。它不可能那样做。 .name
必须为具有这些功能的Object
。
答案 1 :(得分:-1)
关于代码中对象和函数的范围存在一些误解。我希望下面的代码是你想要的。
function Person(first) {
this.firstName = first;
}
Person.prototype.name={
addLastNameInner:function(pr){
return pr.firstName+" Appended last name";
}
}
Person.prototype.name.addLastName=function(pr){
return pr.firstName+" Appended last name";
}
var pr=new Person('john');
alert(pr.name.addLastNameInner(pr));//Working fine
alert(pr.name.addLastName(pr));//working fine