Baidu 검색을 자주 사용하는 학생들은 입력 상자의 드롭 다운 색인을 무시하지 않습니다. 너무 편리합니다. 그러나 고유 한 조건으로 인해이 비동기 기술은 일부 테스트에 직면하게됩니다. 동시 서버 요청은 프론트 엔드 포위 공격을 촉구하면 Ajax를 가능한 한 많이 보내는 횟수를 줄일 것을 촉구합니다. 이 기사와 관련이있는 것처럼 들리지는 않지만 그렇지 않습니다. 우선, Baidu에 대한 무료 광고를합시다. Baidu 홈페이지에 "프론트 엔드"라는 단어를 입력하고 Chromebug를 사용하여 보낸 응답을 쉽게 볼 수 있습니다. 결과는 다음과 같습니다.
코드 사본은 다음과 같습니다.
window.bdsug.sug ({q : '프론트 엔드';
Baidu는 OBJ 매개 변수로 SUG 메소드를 반환하여 풀다운 데이터를 렌더링하려고합니다. 페이지를 새로 고치지 않고 "프론트 엔드"를 다시 입력하면 비슷한 요청이 발생하지 않았습니다. 이는 요청 된 개체를 임시로 저장하는 데 사용되는 캐시 객체를 설정했을 가능성이 있음을 의미합니다. 같은 단어가 나중에 입력되면 캐시 객체의 키가 먼저 검색됩니다. 경기가 성공하면 객체의 가치는 직접 읽히고 더 이상 서버에 요청을 보내지 않아 비용을 효과적으로 절약 할 수 있습니다.
벽돌을 던지고 jade를 가져 오자, 실제 주인공 : Hasownproperty 방법에 대해 이야기합시다.
나는 Jsers가 Hasownproperty에 익숙하지 않다고 생각하며, 여기서 강에서 물을 팔고 있습니다.
객체의 열쇠에 속성이 존재하는지 여부를 결정하는 데 사용되며 반환 값은 부울 값입니다. 예는 다음과 같습니다.
코드 사본은 다음과 같습니다.
var test0 = array.prototype.HasOwnProperty ( 'split'); // 스플릿 메소드가 배열에 존재하지 않기 때문에 false
var test1 = string.prototype.HasOwnProperty ( 'split'); // split이 문자열 객체를위한 내장 메소드이기 때문에 true
당신이 이것을 알면, hasownproperty의 힘을 보는 것만으로는 충분하지 않은 것 같습니다. 바이두 풀다운의 예를 간단히 재현하겠습니다.
코드 사본은 다음과 같습니다.
var data = {}, saveobj = function (val) {
if (data.hasownproperty (val)) {// 제출 된 값이 데이터 객체에 존재하는 경우 요청이 없습니다.
var len = data [val] .length;
for (var i = 0; i <len; i ++) {
console.log (data [val] [i]);
}
}또 다른{
var url = 'http://suggestion.baidu.com/su?wd=' + val;
$ .ajax ({// 명확한 예제를 위해, 여기서 우리는 jQuery의 ajax를 예로 사용합니다.
URL : url + '& p = 3 & cb = window.bdsug.sug & sid = 1421_1513_1541_1542_1582 & t = 1353756355137', // 마지막 매개 변수 t는 타임 스탬프입니다.
데이터 유형 : 'JSONP',
유형 : 'get',
성공 : 기능 (RES) {
var msg = res.data, len = msg.length;
msg == null && (msg = []);
if (len> 0) {
데이터 [VAL] = MSG; // 캐시 된 검색 결과
for (var i = 0; i <len; i ++) {
console.log (msg [i]); // 요청 결과를 인쇄합니다
}
}
}, 오류 : function () {
경고 ( '오류');
}
});
}
};
일부 동료들은 이런 식으로 캐시 객체 데이터가 차지하는 메모리가 키 값이 저장됨에 따라 커지고 커질 것이라고 의문을 제기했습니다. 그런 다음 이것이 불가피하다고 말하고 싶습니다. 서버 요청을 저장하려면 다른 사람을 희생해야합니다. 실제로, 캐시 객체가 차지하는 공간은 일반적으로 "상주 메모리"가 아니기 때문에 무시할 수 있으며 페이지가 새로 고침되면 파괴됩니다. 그러나이 객체의 피크 값에 동의하기 위해 다른 솔루션을 제공 할 수 있습니다. 예를 들어, 100 개의 키 값 쌍을 최대로 저장할 수 있습니다. 숫자가 100을 초과하면 처음 10 개의 저장된 키가 삭제 연산자를 통해 삭제되거나 저장되지 않으므로이 문제를 피할 수 있습니다.
Hasownproperty 방법은 객체 감지에서 특히 일반적입니다. 물론 관심있는 학생들은 Propertyisenumerable 방법에 대해 배울 수 있습니다. HasownProperty의 향상된 버전입니다. 자체 특성과 특성의 열거를 감지 할 수 있습니다. 이 기사는 자세히 설명하지 않습니다.