关于js构建对象属性设置的问题,求大神帮助!!

于大圣 2015-05-20 06:02:11
老规矩,先上代码
<script type="text/javascript">
function Person()
{
this.name = "zhangsan";
this.age = 55;
if(typeof Person.flag === "undefined")
{
Person.prototype.showInfo = function()
{
alert(this.name + " : " + this.age);

};
Person.flag = true;
}
}

var p1 = new Person();
alert(Person.flag);//返回true
alert(p1.flag);//返回undefined
var p2 = new Person();
</script>

不明点:Person.flag设置的值为什么不能用p1.flag取到,或者说Person.flag = true;这种设置方式的作用域是什么?
Person.flag = true;
p1.flag = true;
Person.prototype.flag = true;的作用域的异同?求大神赐教
...全文
124 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
KK3K2005 2015-05-21
  • 打赏
  • 举报
回复
js原型(链)的概念 一个属性读的时候 从本体 一直到 原型。。原型的原型。。。。 查找 找到第一个就返回 一个属性写的时候 直接在本体建立这个属性
打字员 2015-05-21
  • 打赏
  • 举报
回复
Person.flag是Person的私有屬性, 所以p1.flag是不存在的(無論是p1本身還是它的原型链上) 用一段代碼來說明一下 var p1 = new Person(); 干了些撒 p1 = new Object(); p1.name = "zhangsan"; p1.age = 55; Person.prototype.showInfo = function() { alert(this.name + " : " + this.age); }; Person.flag = true; p1._proto_ = Person.prototype; p1._proto_ .constructor = Person; 現在,我們來找一下p1.flag 因為p1自身并未聲明flag這個屬性,所以我們只能到它的原型链中去找 p1._proto_指向的是Person.prototype Person.prototype.flag沒有,那麼再向上找 Person原型Object Object.prototype.flag有沒有,沒有。 所以,p.flag確實不存在。

87,955

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧