Как создать объект JavaScript, как Date ()? - PullRequest
1 голос
/ 01 октября 2011

Интересно, как можно создать объект, например MyObject (), который может работать как объект даты javascript, когда нам +(new MyObject()) нравится:

var a = new Date();
alert(+a);

Ответы [ 3 ]

8 голосов
/ 01 октября 2011

Ваш объект должен иметь метод valueOf, например:

var f=new function(){
    this.valueOf=function(){
        return 5;
    }
};
alert(+f); // Displays 5

Если вы не хотите определять метод для объекта, но для его prototype, как предлагается в комментариях, используйте следующее:

function MyObject(value){
    this.value = value;
}
MyObject.prototype.valueOf = function(){
    return this.value
}

var o = new MyObject(17);
alert(+o); // Displays 17
1 голос
/ 01 октября 2011

Создайте функцию, которая изменяет свойство this. После определения функции, используя function(){}, добавьте методы к ней, используя prototype.

Обычно экземпляр функции, созданной с использованием ключевого слова new, возвращает объект, который представляет this внутри определенной функции. Когда вы определяете метод toString, функция будет отображать пользовательскую строку при вызове из контекста строки (по умолчанию [object Object].

Пример:

function MyClass(value){
     this.value = value
     this.init_var = 1;
}
MyClass.prototype.getInitVar = function(){
    return this.init_var;
}
MyClass.prototype.setInitVar = function(arg_var){
    this.init_var = arg_var;
}
MyClass.prototype.toString = function(){
    return "This class has the following property: " + this.init_var;
}

var class_instance = new MyClass();
class_instance.setInitVar(3.1415);
alert(class_instance)
0 голосов
/ 01 октября 2011

Вот решение,

var MyObject = Date;
var b= new MyObject();
alert(+b) //It will display the current date in milliseconds;

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...