2010-09-10 97 views
0

我是JavaScript新手,面向对象程序设计请耐心等待我的任何含糊之处。处理对象参数

我有一个方法,需要一个对象作为它的参数。 所需的对象为该方法设置选项。

var objInstance = csvObj.getData({ 
    url: '', // csv url 

    format: '', // return data format 

    onComplete: function (output) { 
      // a function that will display data returned 
    } 
}); 

csvObj如下

var csvObj = { 
    getData: function (o) { 

     var format = o.format || 'json', //optional options 
      url = o.url, callback = o.onComplete; // required options 

     function include_js(jsurl) { // private function for performing cross dormain requests 
      var script = document.createElement("script"); 
      script.type = "text/javascript"; 

      script.src = jsurl; 
      document.getElementsByTagName("head")[0].appendChild(script); 
     } 


     (function() { // anonymous function for proccessing and returning data 

      if (typeof callback === 'function' && url) { // if require options are defined 

       if (!window.call_back) { // and global call_back function is not yet defined 
        window.call_back = callback; // define global call_back function (will be called when external script is loaded) 
       } 

       var restQuery = 'http://query.yahooapis.com/v1/public/yql?q=', 
       query = 'select * from csv where url="' + url + '" and columns="' + cols + '"', 

       yqlQuery = restQuery + encodeURIComponent(query) + '&format=' + data + '&callback=call_back'; // create YQL query 
       include_js(yqlQuery); // create a cross dormain YQL request 
      } 
     else { 
       alert('onComplete function or csv url not defined.'); // required options not defined 
      } 
     }()); 

    } 
}; 

问题定义:是否有处理对象参数不是简单地访问这样一个更好的办法:

var privateProperty = object.property;

var privateMethod = object.method; 

回答

2

你的方法是完全有效的。你可以像这样做,太:

var privateMethod = object['method']; 

这可以是动态获取属性很方便,但总的来说,我喜欢object.method,因为它更容易阅读。

+0

+1 928我想我可以相信你的答案。 – 2010-09-10 14:05:09