2016-07-07 80 views
-6

在你說這是一個重複我已閱讀所有其他帖子,他們有點解決我的問題,但現在我需要知道爲什麼以下出現作爲未捕獲的SyntaxError:意外的令牌> 下面我包括我的整個庫,所以你可以看到我的希望已經編寫這樣的工作,請幫助我 Javascript變量意外的令牌>

php2js.$this->(); 

這是我的圖書館

php2js = window.php2js || {}; 

php2js = function() { 

    var yourVar1; 
    var yourVar2; 

    publicFunc1 = function(content) { 
    document.write(content); 
    } 

    publicFunc2 = function(handle, first, last) { 
     var string = handle.split(first); 
     if (1 in string) { 
      var output = string[1].split(last); 
      return output[0]; 
     } 
     return ''; 
    } 

    publicFunc3 = function(str,begin,end) { 
     t = str.split(begin); 
     t = t[1].split(end); 
     return t[0]; 
    } 

    publicFunc4 = function(delimiter, string, limit) { 
    if (arguments.length < 2 || 
     typeof delimiter === 'undefined' || 
     typeof string === 'undefined') { 
     return null 
     } 
     if (delimiter === '' || 
     delimiter === false || 
     delimiter === null) { 
     return false 
     } 
     if (typeof delimiter === 'function' || 
     typeof delimiter === 'object' || 
     typeof string === 'function' || 
     typeof string === 'object') { 
     return { 
      0: '' 
     } 
     } 
     if (delimiter === true) { 
     delimiter = '1' 
     } 

     delimiter += '' 
     string += '' 

     var s = string.split(delimiter) 

     if (typeof limit === 'undefined') return s 

     if (limit === 0) limit = 1 

     if (limit > 0) { 
     if (limit >= s.length) { 
      return s 
     } 
     return s 
      .slice(0, limit - 1) 
      .concat([s.slice(limit - 1) 
      .join(delimiter) 
      ]) 
     } 

     if (-limit >= s.length) { 
     return [] 
     } 

     s.splice(s.length + limit) 
     return s 
    }; 

    publicFunc5 = function(text, name, type) { 
     var a = document.createElement("a"); 
     var file = new Blob([text], {type: type}); 
     a.href = URL.createObjectURL(file); 
     a.download = name; 
     a.click(); 
    } 

    publicFunc6 = function(id, string) { 
    var element = document.getElementById(id); 
    element.innerHTML = string; 
    } 

    publicFunc7 = function(grab) { 
    var parts = window.location.search.substr(1).split("&"); 
    var $_GET = {}; 
    for (var i = 0; i < parts.length; i++) { 
     var temp = parts[i].split("="); 
     $_GET[decodeURIComponent(temp[0])] = decodeURIComponent(temp[1]); 
    } 

    return $_GET[grab]; 
    } 

    publicFunc8 = function(name,value,days) { 
     if (days) { 
      var date = new Date(); 
      date.setTime(date.getTime()+(days*24*60*60*1000)); 
      var expires = "; expires="+date.toGMTString(); 
     } 
     else var expires = ""; 
     document.cookie = name+"="+value+expires+"; path=/"; 
    } 

    publicFunc9 = function(name) { 
    var value = "; " + document.cookie; 
    var parts = value.split("; " + name + "="); 
    if (parts.length == 2) return parts.pop().split(";").shift(); 
    } 

    publicFunc10 = function() { 
    return navigator.userAgent; 
    } 

    publicFunc11 = function(str) { 
     return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;'); 
    } 

    publicFunc12 = function() { 
    var obj = {} 
    obj.foo = 42; 

    var bar = 'foo'; 
    console.log(obj[bar]); 
    } 

    return { 
    "echo" : publicFunc1, 
    "GetBetween" : publicFunc2, 
    "GBS" : publicFunc3, 
    "explode" : publicFunc4, 
    "fcd" : publicFunc5, 
    "echoById" : publicFunc6, 
    "$_GET" : publicFunc7, 
    "setCookie" : publicFunc8, 
    "$_COOKIE" : publicFunc9, 
    "$UA" : publicFunc10, 
    "htmlentities" : publicFunc11, 
    "$this->" : publicFunc12 
    } 

}(); 
+4

這是什麼'php2js $本 - >();'當然這不是JavaScript的! –

+0

我完全不知道你在JavaScript中使用''>'語法實現了什麼,但是如果你有一個帶'$ this->'屬性的對象,你可以用'obj [「$這 - >「]'。這太奇怪了,無法使用。 – Xufox

+0

這是我的JavaScript庫的一部分,我可以編輯我的問題,幷包括整個庫,但它是149行 –

回答

2

所以,你必須用一些方法保存的對象, d鍵。這些鍵的值在點語法中無效。爲了用你的代碼調用它,你需要使用括號表示法。基本思路:

var php2js = (function() { 
 
    return { 
 
    "$this->": function() { 
 
     console.log("hey"); 
 
    } 
 
    }; 
 
}()); 
 

 
php2js["$this->"]();

+0

所以我的代碼做 'return {' '「$ this->」:function(){console.log {「嘿」); }' '}' 'php2js [「$ this - >」]();' –

+0

因爲我有一個完整的js庫,它的所有函數都從返回中運行,所以 return {「function」:myfunction,「function2 「:myfunction1} –

+0

您是否嘗試過代碼,最終返回的內容無關緊要......我將它簡化爲一個簡單的骨頭示例。 – epascarello