Home >Web Front-end >JS Tutorial >Several issues that should be paid special attention to when using prototype.js._prototype
1. String.prototype.camelize BUG
This method is used to return the camel notation of the string. When using js to control the style of elements,
is often used. For example,
var ss="font-color"
ss=ss.camelize() // fontColor
Normally camelize will work well , but there is a special column, that is, floating positioning float
var ss="float"
obj.style[ss.camelize()]="right" // This will cause an error.
Obviously, the author did not consider the special case of float. The correct way to write it is:
ie: obj.style.styleFloat="right"
ff: obj.style.cssFloat="right"
2. String.prototype.inspect BUG
There is a bug in the inspect method here. The author did not use regular rules when using the replace method, which resulted in only the first matching character being replaced.
The correct way to write it should be like this
inspect: function() {
return "'" this.replace(/\/g, '\\').replace(/"/g, '\"' ) "'";
}
3. Array.prototype.all BUG
This method checks whether all elements in the array can make the iteration function true. If all can be satisfied, return true, otherwise return false
var f=function(x){return x%2==0} //Check whether a number is an even number
var arr=[2,4, 6]
alert (arr.all(f)==true) //Show true
But when arr is empty, it still returns true
var arr=[]
alert(arr. all(f)==true) //Display true
4. Array.prototype.any BUG
Same as the all method, still returns true for an empty array
5.Array.prototype.detect which is the find method
This is not a bug, but it is easy for people to misunderstand and make mistakes without looking at the original code.
This method finds the first element that satisfies the iteration function and finally returns the value of the element
Misunderstanding 1:
var f=function(x){return x%2==0} //Check whether Is an even number
var arr=[1,3,5,7] //Deliberately define an array of all odd numbers.
alert(arr.find(f)==false) //false
//Many people mistakenly believe that the find function will return false when it cannot find an element that meets the conditions. In fact, it returns "undefined"
Misunderstanding 2:
Finding numeric elements in an array
var f=function(x){return !isNaN(x) && typeof(x)==="number"}
var arr=[false,"go_rush",0,"Ashun"]
if (arr.find(f)) alert("The array contains numeric elements") //In fact, this alert will never be executed.
Because the find method returns the first value that meets the conditions. Return here: 0. So...
6. You need to be extra careful when handling hash objects
var hash={member:1,test:2,ids:3}
alert(hash.member)
alert($H(hash).inspect())
alert($H(hash).toQueryString())
//hash.member actually exists but .inspect() and .toQueryString() treat it as if it does not exist
Similarly, the following properties will also conflict with prototype.js.
each, all, any, collect, detect, findAll, grep, include, inject, invoke, max, min,
partition, pluck, reject, sortBy, toArray, zip, inspect, map, find, select, member, entries