1
如何通過名稱空間獲取實例化對象的類型名稱?如何在JavaScript中獲取此對象的類型名稱?
考慮宣佈的傳承的這兩種方式:
模塊
通過這種方式之外,還有名爲Shark
一個function
對象,因此每當我問myShark.constructor.name
,它返回名稱constructor
引用的功能,即Shark
。
// Fish
function Fish() {
this.fins;
}
Fish.prototype.swim = function() {
console.log("Swim");
};
// Shark
function Shark() {
this.teeth;
}
Shark.prototype = new Fish;
Shark.prototype.constructor = Shark;
var myShark = new Shark();
console.log("My shark is: " + myShark.constructor.name);
// Prints => My shark is: Shark
裏面一個模塊
這是所有罰款,但每當我宣佈一個模塊內部的繼承結構,我通常如下構建它。問題在於Yacht
的構造函數引用了一個匿名函數。因此,每當我要求myBoat.constructor.name
它有一個空字符串。有沒有辦法讓我仍然可以獲得對象類型的String
表示形式?
var boats = (function() {
exports = {};
// Boat
exports.Boat = function() {
this.crew = 1;
};
exports.Boat.prototype.sail = function() {
console.log("Sail");
};
// Yacht
exports.Yacht = function() {
this.decks = 4;
};
exports.Yacht.prototype = new exports.Boat;
exports.Yacht.prototype.constructor = exports.Yacht;
return exports;
}());
var myYacht = new boats.Yacht();
console.log("My boat is: " + myYacht.constructor.name);
// Prints => My boat is:
我已經考慮改變我如何聲明繼承,以便創建一個名爲模塊內部的功能,然後通過exports
暴露它們如下。有沒有其他方法可以得到相同的結果而不需要必須作出命名的功能,然後將它們附加到出口?
var drinks = (function() {
var exports = {};
// Drink
function Drink() {
this.calories = 130;
}
// Beer
function Beer() {
this.alcohol = 8;
}
Beer.prototype = new Drink;
Beer.prototype.constructor = Beer;
exports.Drink = Drink;
exports.Beer = Beer;
return exports;
}());
var myBeer = new drinks.Beer();
console.log("My drink is: " + myBeer.constructor.name);
// Prints => My drink is: Beer
當你說「主要功能的作用域」時,你的意思是命名空間/模塊的權利?這樣做有沒有其他副作用?如果沒有,我可能會採取這條路線。 – zero298
是的,模塊功能;沒有我知道的。 ) – raina77ow