锁定老帖子 主题:用js书写UI组件之js基础知识
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-01
最后修改:2008-12-01
fins 写道 建议你多看看其他js组件/框架的代码 应该能学到很多吧
例如你说的 向事件响应函数传递自定义参数之类的. 另外 你的一些概念有错误 虽然死抠概念 没什么意义 不过 有些概念和术语还是统一一下比较好. 不应该总是自创概念. 例如你说的那个 关联数组, 在php perl中或许有种叫法 但是在js 中, 没见过谁这么叫的. 而且严格来说 关联数组和对象 完全不同. 你用 关联数组来指代 js的对象 是错误的. 感谢你的这个建议:“看看其他js组件/框架的代码 ”。 不过眼目前没那个劲去看! 我的目标就是寻找js中书写组件的方法!代码优不优雅,效率高不高,现在没劲去理它!当我寻找到了 方法后,在实际中再去优化它。 js非常的灵活, 别人的框架是为实际使用而写,不是为了便于阅读而写! 他们不可能浅显的告诉我, 在写复杂的UI组件时,如何进行!举个例子:我今天正在看一个写消息提示组件的那个源码!从实际效率与性能上说, 这个源代码非常优秀,如果要从易读性来说,唉,真差!我跟踪事件流程,都好了好长功夫!然后,看它的 一个简单的通过id名称得对象,它的代码在哪里转了半天。 不过凭心而论,代码质量的确让我赞叹! 但是,这个无法告诉我,复杂组件如何封装啊?不会告诉我,如何把数据结构,设计模式,javascript结合在一起啊? 我会按我的方式,去寻找复杂设计方法的,当找到后,有必要,再去看别人的源码,优化代码! |
|
返回顶楼 | |
发表时间:2008-12-01
最后修改:2008-12-01
fins 写道 我不认同这本书中的说法
js的对象 可以充当 关联数组 但是 如果 把 {} 理解为关联数组 我觉得是不对的 关联数组是一种特殊的对象 但是两者不能画全等号 我狂晕! 在初中数学中,我们经常这样做题:假设a=2 ,b=3 则a+b=5 在这里,已经定义了a与b的概念,你不会说,我不认同这个概念, a 与b不是数字,它是英文字母, 不,它不是英文字母,它是拼音字母。 在那本书的描述中,已经对关联数组的概念作了描述了。你认不认可,是你的事了。 我在我的文中,也作了些限定性的描述,为了怕描述不准确,还用例子,进行说明。如果有人 还要理解偏,如果理解有模糊感觉了,还不调试例子,还不查资料,对于这种人,我只能叫无语了, 无可奈何了! |
|
返回顶楼 | |
发表时间:2008-12-01
yunhaifeiwu 写道 fins 写道 我不认同这本书中的说法
js的对象 可以充当 关联数组 但是 如果 把 {} 理解为关联数组 我觉得是不对的 关联数组是一种特殊的对象 但是两者不能画全等号 我狂晕! 在初中数学中,我们经常这样做题:假设a=2 ,b=3 则a+b=5 在这里,已经定义了a与b的概念,你不会说,我不认同这个概念, a 与b不是数字,它是英文字母, 不,它不是英文字母,它是拼音字母。 在那本书的描述中,已经对关联数组的概念作了描述了。你认不认可,是你的事了。 我在我的文中,也作了些限定性的描述,为了怕描述不准确,还用例子,进行说明。如果有人 还要理解偏,如果理解有模糊感觉了,还不调试例子,还不查资料,对于这种人,我只能叫无语了, 无可奈何了! 犀牛书中 说的 是 "Objects in JavaScript can serve as associative arrays" js中没有关联数组这种东西. 信不信由你了. 如果以后你在和别人交流的时候 总是说 定义一个关联数组 {a:1 ,b:2}... 这样是很难让人理解的. |
|
返回顶楼 | |
发表时间:2008-12-01
最后修改:2008-12-01
yunhaifeiwu 写道 ...... 可用作map,用作树,用作一维数组,多维数组等。 json描述了一个树状结构的对象。各个节点,要么是一个普通对象,要么是函数,要么是一个由前两者组成的复合对象。 当一个对象,由json定义时,该对象本质是一个关联数组(即索引为字符串的数组 可动态的增加、删除、修改元素。每个元素要么是一个普通对象、要么是一个函数、要么是由这两者组成的复合对象。 ...... 建议去 www.json.org 网站看一下 究竟什么是json. 另外 在 关联数组的问题上我再和你纠结一下: 你可以说, "js中,一个object有时可以相当于一个关联数组,但是其本质仍然是一个object" 你那个 "本质是一个关联数组"的说法 大错特错. |
|
返回顶楼 | |
发表时间:2008-12-01
fins 写道 yunhaifeiwu 写道 fins 写道 我不认同这本书中的说法
js的对象 可以充当 关联数组 但是 如果 把 {} 理解为关联数组 我觉得是不对的 关联数组是一种特殊的对象 但是两者不能画全等号 我狂晕! 在初中数学中,我们经常这样做题:假设a=2 ,b=3 则a+b=5 在这里,已经定义了a与b的概念,你不会说,我不认同这个概念, a 与b不是数字,它是英文字母, 不,它不是英文字母,它是拼音字母。 在那本书的描述中,已经对关联数组的概念作了描述了。你认不认可,是你的事了。 我在我的文中,也作了些限定性的描述,为了怕描述不准确,还用例子,进行说明。如果有人 还要理解偏,如果理解有模糊感觉了,还不调试例子,还不查资料,对于这种人,我只能叫无语了, 无可奈何了! 犀牛书中 说的 是 "Objects in JavaScript can serve as associative arrays" js中没有关联数组这种东西. 信不信由你了. 如果以后你在和别人交流的时候 总是说 定义一个关联数组 {a:1 ,b:2}... 这样是很难让人理解的. 与别人尝试交流时,我尽可能的用大家都知道的词。在我选用关联数组这个词时,也是在网上查了资料的。 权威指南这本书也在用这个词,没想到还是。。。。。 不过,感谢兄台的建议!如:读别人的优秀的源代码,尽可能用大众化的词,是笔记尽可能说明是个人观点, 提醒读者,以免误读! 对了,你老兄的大名,我是经常看见,老兄在java方面造诣很深! 如果有什么不得体的地方,请谅解! 不过,关于花括号中的这种对象,与下标是字符的这种数组有种很强的共性,我不知道如何描述,前面的贴文用到的 关联数组一词暂不作修改。等一下,对其含义描述一下。与人方便,就是给自已方便。 感谢fins! |
|
返回顶楼 | |
发表时间:2008-12-01
不知道你到底看没看过 犀牛书.
js中根本就没有"下标是字符的这种数组" object["property"] 这种格式 是访问object属性的一种方式 根本就不是 "下标是字符的这种数组" . 我觉得你有点走入歧途了. P.S.: 我不搞java好多年, 我主要是做ajax开发的. |
|
返回顶楼 | |
发表时间:2008-12-01
fins 写道 yunhaifeiwu 写道 ...... 可用作map,用作树,用作一维数组,多维数组等。 json描述了一个树状结构的对象。各个节点,要么是一个普通对象,要么是函数,要么是一个由前两者组成的复合对象。 当一个对象,由json定义时,该对象本质是一个关联数组(即索引为字符串的数组 可动态的增加、删除、修改元素。每个元素要么是一个普通对象、要么是一个函数、要么是由这两者组成的复合对象。 ...... 建议去 www.json.org 网站看一下 究竟什么是json. 另外 在 关联数组的问题上我再和你纠结一下: 你可以说, "js中,一个object有时可以相当于一个关联数组,但是其本质仍然是一个object" 你那个 "本质是一个关联数组"的说法 大错特错. 这个本质,真的没有去考证。马上修改。json是自已头脑中大体的意识。马上修改,谢谢fins指出。 |
|
返回顶楼 | |
发表时间:2008-12-01
最后修改:2008-12-01
在 js 中
new Object() 和 {} 是等价的 new Array() 和 [] 是等价的 (注意 不是"类似"也不是"相当于", 而是等价) { a : 1, b: 2 } 定义的是一个对象. 只是使用的是 json格式的定义方式而已. 你原帖中说 "json描述了一个树状结构的对象。" 不对 你应该说 "json可以描述一个树状结构的对象。" json也可以表述 线性的数组. 更多的你自己看吧 http://www.json.org/json-zh.html |
|
返回顶楼 | |
发表时间:2008-12-01
最后修改:2008-12-01
fins 写道 不知道你到底看没看过 犀牛书.
js中根本就没有"下标是字符的这种数组" object["property"] 这种格式 是访问object属性的一种方式 根本就不是 "下标是字符的这种数组" . 我觉得你有点走入歧途了. P.S.: 我不搞java好多年, 我主要是做ajax开发的. 首先申明本人没有认真看这本书。 但<<javascript权威指南>>的154页,标题是《8.6 作为关联数组的对象>> 在155页,倒数第四行,有这样一句话:“如果使用一个对象时采取的是这一种形式,我们常常 称他为关联数组(associativearry),它是一个数据结构,允许动态地将任意数值与字符串联系在一 起”。前面是它的例子与唠唠叨哪叨的解说。 |
|
返回顶楼 | |
发表时间:2008-12-01
"常常称" 本身就意味着 只是一种习惯.
而且 如我前面所说 我不认同这个书中的这种观点. 你能说: 代码 window["document"] 表示的是 操作一个关联数组 吗? 我觉得 书的作者这么写 只是为了更好的让大家理解 js-object的一些性质. 而不是为了 告诉大家"这就是关联数组". 总之 js中对象随处可见, 还是从对象的视角来考虑问题比较好. 好了 不在这个问题上和你纠结了. 你要是觉得我说的不对 那你选择你自己喜欢的方式去理解吧. |
|
返回顶楼 | |