论坛首页 入门技术论坛

用js书写UI组件之js基础知识

浏览 20874 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-12-01   最后修改:2008-12-01
fins 写道
建议你多看看其他js组件/框架的代码 应该能学到很多吧
例如你说的 向事件响应函数传递自定义参数之类的.

另外 你的一些概念有错误
虽然死抠概念 没什么意义
不过 有些概念和术语还是统一一下比较好.

不应该总是自创概念.
例如你说的那个 关联数组, 在php perl中或许有种叫法
但是在js 中, 没见过谁这么叫的.

而且严格来说 关联数组和对象 完全不同.
你用 关联数组来指代 js的对象 是错误的.




感谢你的这个建议:“看看其他js组件/框架的代码 ”。

不过眼目前没那个劲去看!

我的目标就是寻找js中书写组件的方法!代码优不优雅,效率高不高,现在没劲去理它!当我寻找到了
方法后,在实际中再去优化它。

js非常的灵活, 别人的框架是为实际使用而写,不是为了便于阅读而写! 他们不可能浅显的告诉我,
在写复杂的UI组件时,如何进行!举个例子:我今天正在看一个写消息提示组件的那个源码!从实际效率与性能上说,
这个源代码非常优秀,如果要从易读性来说,唉,真差!我跟踪事件流程,都好了好长功夫!然后,看它的
一个简单的通过id名称得对象,它的代码在哪里转了半天。 不过凭心而论,代码质量的确让我赞叹!
但是,这个无法告诉我,复杂组件如何封装啊?不会告诉我,如何把数据结构,设计模式,javascript结合在一起啊?

我会按我的方式,去寻找复杂设计方法的,当找到后,有必要,再去看别人的源码,优化代码!








0 请登录后投票
   发表时间:2008-12-01   最后修改:2008-12-01
fins 写道
我不认同这本书中的说法
js的对象 可以充当 关联数组
但是 如果 把 {} 理解为关联数组 我觉得是不对的

关联数组是一种特殊的对象 但是两者不能画全等号



我狂晕! 在初中数学中,我们经常这样做题:假设a=2 ,b=3 则a+b=5

在这里,已经定义了a与b的概念,你不会说,我不认同这个概念, a 与b不是数字,它是英文字母,

不,它不是英文字母,它是拼音字母。

在那本书的描述中,已经对关联数组的概念作了描述了。你认不认可,是你的事了。

我在我的文中,也作了些限定性的描述,为了怕描述不准确,还用例子,进行说明。如果有人
还要理解偏,如果理解有模糊感觉了,还不调试例子,还不查资料,对于这种人,我只能叫无语了,
无可奈何了!

   
0 请登录后投票
   发表时间: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}...
这样是很难让人理解的.

0 请登录后投票
   发表时间:2008-12-01   最后修改:2008-12-01
yunhaifeiwu 写道

......
可用作map,用作树,用作一维数组,多维数组等。

json描述了一个树状结构的对象。各个节点,要么是一个普通对象,要么是函数,要么是一个由前两者组成的复合对象。
   当一个对象,由json定义时,该对象本质是一个关联数组(即索引为字符串的数组
可动态的增加、删除、修改元素。每个元素要么是一个普通对象、要么是一个函数、要么是由这两者组成的复合对象。

......   


建议去 www.json.org 网站看一下 究竟什么是json.

另外 在 关联数组的问题上我再和你纠结一下:
你可以说, "js中,一个object有时可以相当于一个关联数组,但是其本质仍然是一个object"
你那个 "本质是一个关联数组"的说法 大错特错.
0 请登录后投票
   发表时间: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!



0 请登录后投票
   发表时间:2008-12-01  
不知道你到底看没看过 犀牛书.
js中根本就没有"下标是字符的这种数组"
object["property"] 这种格式 是访问object属性的一种方式
根本就不是 "下标是字符的这种数组" .

我觉得你有点走入歧途了.

P.S.: 我不搞java好多年, 我主要是做ajax开发的.
0 请登录后投票
   发表时间:2008-12-01  
fins 写道
yunhaifeiwu 写道

......
可用作map,用作树,用作一维数组,多维数组等。

json描述了一个树状结构的对象。各个节点,要么是一个普通对象,要么是函数,要么是一个由前两者组成的复合对象。
   当一个对象,由json定义时,该对象本质是一个关联数组(即索引为字符串的数组
可动态的增加、删除、修改元素。每个元素要么是一个普通对象、要么是一个函数、要么是由这两者组成的复合对象。

......   


建议去 www.json.org 网站看一下 究竟什么是json.

另外 在 关联数组的问题上我再和你纠结一下:
你可以说, "js中,一个object有时可以相当于一个关联数组,但是其本质仍然是一个object"
你那个 "本质是一个关联数组"的说法 大错特错.


这个本质,真的没有去考证。马上修改。json是自已头脑中大体的意识。马上修改,谢谢fins指出。
0 请登录后投票
   发表时间: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



0 请登录后投票
   发表时间:2008-12-01   最后修改:2008-12-01
fins 写道
不知道你到底看没看过 犀牛书.
js中根本就没有"下标是字符的这种数组"
object["property"] 这种格式 是访问object属性的一种方式
根本就不是 "下标是字符的这种数组" .

我觉得你有点走入歧途了.

P.S.: 我不搞java好多年, 我主要是做ajax开发的.


首先申明本人没有认真看这本书。

但<<javascript权威指南>>的154页,标题是《8.6 作为关联数组的对象>>

在155页,倒数第四行,有这样一句话:“如果使用一个对象时采取的是这一种形式,我们常常
称他为关联数组(associativearry),它是一个数据结构,允许动态地将任意数值与字符串联系在一
起”。前面是它的例子与唠唠叨哪叨的解说。


0 请登录后投票
   发表时间:2008-12-01  
"常常称" 本身就意味着 只是一种习惯.

而且 如我前面所说  我不认同这个书中的这种观点.

你能说: 代码  window["document"] 表示的是 操作一个关联数组 吗?

我觉得 书的作者这么写 只是为了更好的让大家理解 js-object的一些性质.
而不是为了 告诉大家"这就是关联数组".

总之 js中对象随处可见, 还是从对象的视角来考虑问题比较好.

好了 不在这个问题上和你纠结了.
你要是觉得我说的不对 那你选择你自己喜欢的方式去理解吧.



0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics