关于构造函数的一个问题

iammingbohello 2008-12-29 12:34:09
一般的函数定义,会自动成为全局对象的一个属性(或者说成为一个方法),那对象的构造函数呢?
例如:
function Rectanglen(w, h)
{
return w+h;
}
会成为全局对象的一个属性。

那:
function Rectangle(w, h)
{
this.width = w;
this.height = h;
}
在全局对象中会扮演什么角色呢?

javascript解释器是怎么区分上面的两个函数的?

请教并感谢。
...全文
67 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CutBug 2008-12-29
  • 打赏
  • 举报
回复
width,height,getC都必须实例化才能取得
var1可以直接引用MyClass.var1
CutBug 2008-12-29
  • 打赏
  • 举报
回复
<script>
function MyClass(w,h)
{
var c=100;//私有变量
this.width = w; //public 属性
this.height = h;
this.getC = function() { //private 属性
return c;
}
}
MyClass.var1="cc";//静态变量

</script>
CutBug 2008-12-29
  • 打赏
  • 举报
回复
汗,对的是public属性
yangshenghong 2008-12-29
  • 打赏
  • 举报
回复
function Rectangle(w, h)
{
this.width = w;
this.height = h;
}
width 和height 应该是类的属性
CutBug 2008-12-29
  • 打赏
  • 举报
回复
function Rectangle(w, h)
{
this.width = w; //私有变量
this.height = h; //私有变量
}
上面相当于一个类,要取得私有变量,必须实例化
var rec = new Rectangle(10,20);
rec.width
iammingbohello 2008-12-29
  • 打赏
  • 举报
回复
function RecN(w, h)
{
this.width = w;
this.height = h;
}

也是全局对象的一个方法,只不过这个方法不返回值或者说返回undifined。
iammingbohello 2008-12-29
  • 打赏
  • 举报
回复
刚才的问题我是这么理解的:
一般的函数定义和对象的构造函数其实并无区别。
一般的函数定义:如:
function Rectanglen(w, h)
{
return w+h;
}
没有体现出对象的构造函数的特性是因为它没有定义自身类的属性。
其实也可以对以上的函数进行对象化,即new。然后在添加属性。

javascript的解释器不区分:
function Rec(w, h)
{
return w+h;
}

function RecN(w, h)
{
this.width = w;
this.height = h;
}
是一致的。

var Rec1=new(Rec(5,6));
Rec1.width=10;
Rec1.height=8;

var Rec2=new(RecN(10,8);
的效果是一致的。

以上是我的理解。请大家指正。

iammingbohello 2008-12-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 CutBug 的回复:]
this.height = h;
this.getC = function() { //private 属性
return c;
}
}
MyClass.var1="cc";//静态变量

</script>
[/Quote]

this.getC=function()....是public属性吧

87,910

社区成员

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

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