要发疯了。。。。

wtcsy 2009-03-19 10:54:03
在看我们头写的代码 很多地方不明白 请指教...
按他的写法 模拟一下写法 却发现这个类根本没有属性和方法,不知道为什么会这样
各位大虾指点下

<script>
var Class = function(properties){
var _class=function(){
this.name='zhu';
this.say=function(){
alert('a')
}
}
return _class
}

Class.empty = function(){};

Class.prototype = {
say:function(){
alert('hi,world')
}
paly:function(){
alert('enenen')
}
}
var gg = new Class()

for(var i in gg)
{alert(i);alert(gg[i]);}
</script>
...全文
152 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
michael110 2009-03-19
  • 打赏
  • 举报
回复

//第一个函数主要是想利用js闭包功能,后面需要加()
var Class = function(properties){
var _class=function(){
this.name='zhu';
this.say=function(){
alert('a')
}
}
return _class
}()
//第2个就是追加一个empty没有参数的函数
Class.empty = function(){};
//第3个就是功能的扩展,类似功能追加。
Class.prototype = {
say:function(){
alert('hi,world')
},
//这个地方逗号是必须的!
paly:function(){
alert('enenen')
}
}
//这些就是对象的声明和调用了
var gg = new Class()
//gg.say();
//gg.paly();
for(var i in gg) {alert(i);alert(gg[i]);}

//你可以再试一下,这段代码主要是js面向对象编程!
wclszh 2009-03-19
  • 打赏
  • 举报
回复
可可,顶
hzrui 2009-03-19
  • 打赏
  • 举报
回复
say:function(){
alert('hi,world');
},
paly:function(){
alert('enenen');
}

问题1,少了一个 ,
问题2: new Class()返回的是一个function,当构造函数当返回的是一个对象时,会用此对象代替new 出来的对象作为返回值

你alert(gg)就知道了...
blackant2 2009-03-19
  • 打赏
  • 举报
回复

var Class = function(properties){
//var _class=function(){
this.name='zhu';
this.say=function(){
alert('a')
}
//}
//return _class

}

Class.empty = function(){};

Class.prototype = {
say:function(){
alert('hi,world')
}, //这儿逗号
paly:function(){
alert('enenen')
}
}
var gg = new Class()

for(var i in gg)
{alert(i);alert(gg[i]);}

pdsnet 2009-03-19
  • 打赏
  • 举报
回复
先别疯 帮你顶下~
牙签是竹子的 2009-03-19
  • 打赏
  • 举报
回复
wtcsy 2009-03-19
  • 打赏
  • 举报
回复
to 11楼
你的是对的
但是我不是写代码,是理解别人写的代码,我理解错了,所以你写的也就不是我需要的了。 嘿嘿。。
总之多谢谢各位了。。。。。。。
luojihaidao 2009-03-19
  • 打赏
  • 举报
回复
不知道LZ 那里不明白?
luojihaidao 2009-03-19
  • 打赏
  • 举报
回复
Class.prototype = {
xx : function(properties)
{
alert('xx')
}
}
继承
michael110 2009-03-19
  • 打赏
  • 举报
回复
你有没有试一下 我们给你写的代码阿??
gg.paly();会执行alert的啊!

hzrui 2009-03-19
  • 打赏
  • 举报
回复
你的代码我看的很明白,但是我不明白你究竟想知道什么,
var Class = function(properties){
var _class=function(){
this.name='aa'
}
_class.prototype = properties
return _class
}
在我看来,写这样子一个类不外忽两个作用:
1.为传进来的对象增加默认的方法或是属性,这里就是this.name
2.创建一份对象不可修改的拷贝,这个是通过prototype 实现的,因为对象只能覆盖prototype 里面的属性或是方法,但是无法修改里面的属性和方法
mike_24 2009-03-19
  • 打赏
  • 举报
回复
匿名类.
wtcsy 2009-03-19
  • 打赏
  • 举报
回复
是我看的时候理解错了 所以写了个错了的东西在上面,晕
<script>
var Class = function(properties){
var _class=function(){
this.name='aa'
}
_class.prototype = properties
return _class
}

var c = new Class({
say:function(){
alert('hi,world')
},
paly:function(){
alert('enenen')
}
})

var d = new Class(
{
goo:function(){
alert('goo')
},
too:function(){
alert('too')
}
})


var gg = new c()
var ggg = new d()
alert(gg.name)
gg.say();
gg.paly();
ggg.goo()
ggg.too()
</script>

顺便请教一下各位大虾,这好象是先创建了一个构造函数,在根据构造函数去创建类的。这中写法叫什么啊??
还有就是 在我看的代码中
有一个
Class.prototype = {
xx : function(properties)
{
alert('xx')
}
}
我用ggg.xx(),似乎并不起作用,但是代码中却又有,确实不知道应该怎么克用它
各位大虾,指教下吧。。。。。
浴火_凤凰 2009-03-19
  • 打赏
  • 举报
回复
向各位学习了。

87,910

社区成员

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

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