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] );
原文地址:https://www.cnblogs.com/winderby/p/4063409.html