2016-11-07 100 views
-2

我對JS類相當陌生,主要做後端工作。如何在控制檯中重新定義JavaScript(不是CSS)類?

我是用新的JS類玩弄,所以我開始通過實例會在這裏:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

我去了鉻(鉻)開發工具的控制檯和我寫的Polygon類:

class Polygon { 
    constructor(height, width) { 
    this.height = height; 
    this.width = width; 
    } 
} 

然後我想重新定義的類,根據包含的方法的例子,所以我寫:

class Polygon { 
    constructor(height, width) { 
    this.height = height; 
    this.width = width; 
    } 

    get area() { 
    return this.calcArea(); 
    } 

    calcArea() { 
    return this.height * this.width; 
    } 
} 

這就提出了一個ERRO r:Uncaught SyntaxError: Identifier 'Polygon' has already been declared(…)

現在我明白在ES6中有一個新的範圍,並且這些類會自動使用新的範圍等等......但是真的,我該如何重新定義我的類? :D

我通常在寫Python,所以我可以重新定義我想要的所有東西。

+0

? –

+0

我沒跟着。你是否想要有兩個名爲'Polygon'的類,但是有一個是用第三個屬性和方法定義的? – Stephen

+0

我試圖做這樣的事情:'var Polygon = ; Polygon = <重新定義類>'。我正試圖重新定義班級,這意味着我想忘記舊的定義,並使用新的定義。 –

回答

0

我使用的是Chrome版本54.0.2840.71(64位),雖然我可以打開控制檯並聲明一個新類,但我無法重新定義類(您將得到錯誤:VM272:1 Uncaught SyntaxError: Identifier 'Thing' has already been declared ,因爲我試圖重新定義我的班級Thing)。在你的榜樣

Polygon.prototype.area = function() { 
    // do some stuff 
} 

在這種情況下,但是,它不會是一個getter方法,如:

如果你只是想在以後添加方法到類,你可以將它們添加到類的prototype

編輯

要解決語法錯誤,如果你只是重新分配類作爲一個變量,它應該做你想要什麼:

// in your original code 

var Polygon = class{} 

// in the console 

var Polygon = class { 
    // with new stuff 
} 
+0

我想要真正的方法....我想忘記舊的定義,並有一個新的。 –

+1

@ vlad-ardelean他們是「真正的」方法。一個類在底層使用JavaScript原型。 –

+0

@ vlad-ardelean看到我的編輯,你應該能夠使用變量重新分配來完成你想要的 –

2

塊作用域聲明(letconstclass)不能重新聲明。

Class expressionvar可用於再利用和控制檯重新聲明變量:當你寫的第二部分中,你得到了一個錯誤,以便

var Polygon = class Polygon { ... }; 
new Polygon(); 
var Polygon = class Polygon { ... }; 
new Polygon(); 
+0

我的問題是,我已經使用了一個類的聲明....所以在做這些之後,我可以簡單地重用變量名稱,但不能在另一個聲明中使用該名稱。這意味着'class Polygon {}; ... Polygon =(class Polygon {})'起作用。 –

+0

只要重新加載窗口,並且每次當控制檯範圍的污染可能不受歡迎時都使用'var'。 – estus

相關問題