请问外部怎么调用 shool 属性下的:pSchool,mSchool,college ???
var r1=new ren("王二狗",20,"");
console.log( r1.age );
console.log( r1.name );
console.log( r1.pSchool);
r1.say();
function ren(name,age,sex)
{
this.name=!name?"某r1":name;
this.age=!age|age>120|age<=0?1:age;
this.sex=sex=="MAN"|sex=="WOMAN"?sex:"UNKNOW";
this.school=schoolF();
function schoolF()
{
this.pSchool="五七小学";
this.mSchool="实验小学";
this.college="五七小学";
console.log("【我是shool方法】,子属性是【"+pSchool+"】【"+mSchool+"】【"+college+"】");
}
this.say=function()
{
console.log("【我是say方法】,我的名字是"+this.name+",性别是"+this.sex+",年龄是"+this.age+",小学是"+mSchool);
}
}
在构造函数ren中,函数schoolF相当于一个闭包;JavaScript 有一个众所周知的坑就是闭包内的this会指向全局,所以你在schoolF里的属性实际上设给了window。
解决的办法也很简单,就是在schoolF外面先把this保存起来:
function ren() {
/*......*/
var _this = this;
function schoolF() {
_this.pSchool = "五七小学";
/*......*/
}
}
不过看你题目的意思,school是ren的属性,然后pSchool是school的属性?那你得用new调用school才行(楼上也说了)。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。