javascript高级知识分析——作为对象的函数

代码信息来自于http://ejohn.org/apps/learn/。

函数和对象是不是非常相似?

var obj = {}; 
var fn = function(){}; 
console.log( obj && fn );//true
var obj = {}; 
var fn = function(){}; 
obj.prop = "some value"; 
fn.prop = "some value"; 
console.log( obj.prop == fn.prop, "都是对象,都有属性." );

可不可以把返回的结果存储到缓存里?

function getElements( name ) { 
  var results; 
 
  if ( getElements.cache[name] ) { 
    results = getElements.cache[name]; 
  } else { 
    results = document.getElementsByTagName(name); 
    getElements.cache[name] = results; 
  } 
 
  return results; 
} 
getElements.cache = {}; 
 
console.log( "返回的结果: ",  getElements("pre")); ///HTMLCollection [ <pre> ]
console.log( "返回和缓存完全相同", getElements("pre") === getElements.cache.pre);  //true

当我们访问的通过一系列操作获取到的内容,通过缓存先前的结果,可以提高性能。

题目:修改这段代码,使之可以缓存结果

function isPrime( num ) { 
  var prime = num != 1;
  for ( var i = 2; i < num; i++ ) { 
    if ( num % i == 0 ) { 
      prime = false; 
      break; 
    } 
  } 
  return prime; 
} 

console.log( isPrime(5)); 
console.log( isPrime.cache[5] );

 

posted on 2014-10-30 18:37  吹过的风  阅读(160)  评论(0编辑  收藏  举报