Я пытаюсь использовать некоторые более усовершенствованные функции OO JavaScript, после "супер конструктора Doug Crawford" шаблон. Однако я не знаю, как установить и получить типы от моих объектов с помощью собственной системы типов JavaScript. Вот то, как у меня есть он теперь:
function createBicycle(tires) {
var that = {};
that.tires = tires;
that.toString = function () {
return 'Bicycle with ' + tires + ' tires.';
}
}
Как я могу установить или получить тип своего нового объекта? Я не хочу создавать a type
припишите, если существует правильный способ сделать это.
typeof
или instanceof
операторы для моего пользовательского объекта?Вы можете использовать инструмент SWIG для включения библиотек C через интерфейс на собственном языке. Вам придется выполнять вызовы C api из Python, но остальная часть вашего кода может быть только Python.
Может показаться немного устрашающим, но как только вы настроите все, использование этих двух вместе не будет Плохо. В зависимости от того, как была написана библиотека C, могут быть некоторые причуды, но с ними придется иметь дело независимо от того, какой вариант вы использовали.
Если вы объявите Bicycle
вот так, instanceof
будет работать:
function Bicycle(tires) {
this.tires = tires;
this.toString = function () {
return 'Bicycle with ' + tires + ' tires.';
}
}
var b = new Bicycle(2);
console.log(b instanceof Bicycle);
Только в Firefox вы можете использовать свойство __ proto __
для замены прототипа объекта. В противном случае вы не сможете изменить тип уже созданного объекта, вы должны создать новый объект, используя ключевое слово new
.
На мой взгляд, в правильно спроектированном тип иерархии, вам не нужно знать типы отдельных объектов. Но я, кажется, в меньшинстве
Если у вас должна быть идентификация типа, сделайте это явным.
MyClass.prototype.type = "MyClass";
Это надежно и переносимо, по крайней мере для ваших объектов. Он также работает через контексты. Объекты DOM - еще один имеет значение, хотя вы можете делать вещи проще для себя с
window.type = "window";
и т. д.
Я полагаю, что приведенная выше цитата была написана Дугласом Крокфордом .