PDA

View Full Version : 你对Prototype有多了解呢?


骏之城
14-11-07, 03:03 PM
How well do you know prototype
(转发Prototype开发者对Prototype用户出现的一些常见的问题的回答。相信大家看完后,对使用Prototype有更深的认识。原文 (http://thinkweb2.com/projects/prototype-checklist/)在此)
(原文的The wrong way我译成错误的,不是指这个语句是错的,是指使用Prototype的方法不对。原文的格式更好看一些,大家也可以直接看原文。)

1、
错误的:
document.getElemntById('foo')
正确的:
$('foo')


2、
错:
var woot = document.getElementById('bar').value

var woot = $('bar').value
正确:
var woot=$F('bar')


3、
错:
$('footer').style.height='100px';
$('footer').style.background='#ffc';
正确:
$('footer').setStyle({
height: '100px',
background: '#ffc'
})


4、

$('coolestWidgetEver').innerHTML = 'some nifty content'
正确
$('coolestWidgetEver').update('some nifty content')


5、

new Ajax.Request('ninja.php?weapon1=foo&weapon2=bar')
正确
new Ajax.Request('ninja.php', {
parameters: {
weapon1: 'foo',
weapon2: 'bar'
}
})
这样更清楚的定义参数。维护起来也容易。


6、

new Ajax.Request('blah.php', {
method: 'POST',
asynchronous: true,
contentType: 'application/x-www-form-urlencoded',
encoding: 'UTF-8',
})
正确
new Ajax.Request('blah.php')
前面错的例子用的都是缺省值,所以都可以省略掉。


7、

Event.observe('myContainer', 'click', doSomeMagic)
正确
$('myContainer').observe('click', doSomeMagic)
其实差不多,第二种更加面向对象一点,也容易使用链语句。


8、

$$('div.hidden').each(function(el){
el.show();
})
正确
$$('div.hidden').invoke('show')


9、

$$('div.collapsed').each(function(el){
el.observe('click', expand);
})
正确
$$('div.collapsed').invoke('observe', 'click', expand)
invoke也可以用于集合中所有对象的事件处理。


10、

$$('input.date').invoke('observe', 'focus', onFocus);
$$('input.date').invoke('observe', 'blur', onBlur);
正确
$$('input.date')
.invoke('observe', 'focus', onFocus)
.invoke('observe', 'blur', onBlur)


11、

$('productTable').innerHTML =
$('productTable').innerHTML +
'<tr><td>' + productId + ' '
+ productName + '</td></tr><tr><td>'
+ productId + ' ' + productPrice +
'</td></tr>'
正确
var rowTemplate = new Template('<tr><td>#{id} #{name}</td></tr><tr><td>#{id} #{price}</td></tr>');
$('productTable').insert(
rowTemplate.evaluate({
id: productId,
name: productName,
price: productPrice
}))
)

8bit_name
14-11-07, 04:01 PM
嗯,其实很多看起来很对的JS的用法就有问题,但是这块的正确方法一直没在网上流行,呵呵。
版主可以再推广一下正则表达式,也是很有意义滴……

骏之城
14-11-07, 04:13 PM
我对正则表达式还不是很熟,用的不多。你有没有好的建议或参考链接?

顺便共享一个用正则表达式实现的Trim()函数。是从Ext中copy出来的;)

var trimRe = /^\s+|\s+$/g;
/**
* Trims any whitespace from either side of a string
* @param {String} value The text to trim
* @return {String} The trimmed text
*/
trim : function(value){
return String(value).replace(trimRe, "");
},

曹晚
17-11-07, 12:59 AM
很不爽。。。。。。。。。。
个人意见。

骏之城
20-11-07, 10:14 AM
怎么不爽呢?我当这个版主不久,也不知道要发些什么才能吸引人气,我也想发些原创的文章共享给大家,只是自己最近工作上有些变化,静不下心来写,所以发现有些好的文章我会转发一下。
。。。
谢谢你提醒我

relaxlife
05-12-07, 01:42 PM
Prototype 还是很好用的.呵..

bios8086
07-12-07, 11:51 AM
Prototype是什么东西啊?楼主能不能搞个基础讲义给我们 学学!

allent
18-12-07, 01:51 PM
恭喜版主!,感谢分享:):victory:

shuzhp
23-09-08, 02:09 PM
不错,谢谢LZ推荐此文...

forcewind
02-11-08, 10:32 PM
跟Jquery差不多。也是使得js更加简单,是JS里的一个类库吧。不错,顶。

forcewind
02-11-08, 10:33 PM
正则表达式对检查一些域的格式很有用。