2017-09-01 73 views
1
打印對象名稱

如何CreateJS

var stage = new createjs.Stage("demoCanvas"); 
 
console.log(stage.constructor.name);//prints a
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.createjs.com/createjs-2015.11.26.min.js"></script> 
 
<canvas id="demoCanvas" width="500" height="300"> 
 
     alternate content 
 
</canvas>

我試圖創建JS打印的構造函數的名字,但它是印刷a。就是沒有什麼解決打印構造函數的名稱。

+0

然後可能是構造函數的名稱是「a」:),這是有道理的,因爲代碼被縮小了 – codtex

+0

@codtex你可以檢查那裏consturctor是'new createjs.Stage(「demoCanvas」)'。 –

+0

如果它被縮小,是否有任何獲取該構造函數的名稱。 –

回答

2

CreateJS被縮小。這意味着爲了使代碼更小,許多不可直接訪問的變量名稱被縮短了。看看這個簡單的例子。

let a = function(){} 
 

 
let Closure = { 
 
    MyClass : a 
 
} 
 

 
let myInstance = new Closure.MyClass(); 
 

 
console.log(myInstance.constructor.name) // a

如果你只看着你會期望的Closure.MyClass構造將是MyClass的最後兩行,但你可以看到構造函數實際上是a,因爲那是nameClosure.MyClass提到的constructor函數。

也許你應該重新思考你使用/創建對象的方式。如果您有能力,則可以在對象的構造函數中或者在創建對象之後自己附加名稱,並引用該名稱。

let a = function(){ this.name = "MyClass" } 
 

 
let Closure = { 
 
    MyClass : a 
 
} 
 

 
let myInstance = new Closure.MyClass(); 
 

 
myInstance.name2 = "MyClass"; // alternative method 
 

 
console.log(myInstance.name) // MyClass 
 
console.log(myInstance.name2) // MyClass

還有,你可能能夠完成你想要的其他方式,你可能得到創造性。或者你可以嘗試使用庫的未縮小版本。