2016-05-21 160 views
0

我有這個OpenLayers 3類的問題,這擴展了ol.geom.Geometry。我想知道ol.geom.Point例如構造函數的名字,所以我做的:JavaScript - 獲得班級名稱

ol.geom.Point.name 

,但我得到什麼,即使我創建一個實例,並得到構造函數名稱:

var p = new ol.geom.Point([0,0]); p.constructor.name; 

ol.geom.Point的實現可以在here找到。

ol.geom.Point = function(coordinates, opt_layout) {...} 

而且我已經做了jsfiddle重現此行爲。從MDN

閱讀文檔:實現ES6功能

瀏覽器可以推斷其句法位置的 匿名函數的名稱。例如:

var f = function(){};的console.log(f.name); //「f」

那麼,我做錯了什麼或我失蹤了什麼?

在此先感謝!

+0

您使用哪種瀏覽器進行測試。對於我所知道的f.name只支持Firefox。 –

+0

我正在Firefox中測試。 –

+0

只是好奇你爲什麼需要一個構造函數名稱。如果你想設置自定義屬性,使用'ol.geom.Point#setProperties'。 –

回答

2

要在您的方案中訪問像這樣的name屬性,將意味着使用「匿名函數的推斷名稱」。在撰寫本文時,這隻能由尚未公開發布的Chrome 51支持。

這是MDN文檔中說明的,您可能已經閱讀過。請參閱底部的瀏覽器兼容性表格,並查閱「匿名功能推斷名稱」支持。

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Function/name

+0

非常感謝您的支持者,但我已經在chrome 51中測試過,沒有結果。 –

-1

這是一個,的JavaScript - 盲點


請求的事,例如:

var f = function() {}; 
    console.log(f.name); // to return: 
>> f 

無可厚非。而且,從人的角度來看,這似乎是一件很自然的事情 - 但從機器的角度來看,這很違反直覺,爲了做一件簡單的事情就像這樣的工作 - 你可能不得不打破很多事情,你可能會愛。因爲它可能需要一個相當醜陋的補丁。

做的是,將應該&有可能要問任何指針(變量,無論它是否指向一個基本或完全成熟的對象) - 什麼是它的變量名? 但是,比起你遇到麻煩: - 它是否應該在其當前狀態句柄或僅其最初的初始任務中返回指針名稱?如果是這樣,爲什麼不是另一個?

我很喜歡它。但我懷疑,這隻會持續很長一段時間。