JavaScript объект - PullRequest
       1

JavaScript объект

1 голос
/ 13 января 2012

Я могу легко создавать и возражать во множестве разных.Например, вот так:

var myObject = {
    myFunction: function () {
        return "";
    }
};

Поэтому, если я предупреждаю этот объект, я получаю что-то такое:

[object Object]

Теперь я, если я предупреждаю объект NaN, получаю следующее:

NaN

И я все еще могу вызывать функцию из нее:

alert(NaN.hasOwnProperty().toString());

Поэтому у меня вопрос, как я могу создать объект, подобный объекту NaN?

  1. Если я предупреждаю об этом, он должен возвращать что-то вроде myObject
  2. Я должен иметь возможность создавать и вызывать функции, такие как myObject.myFunction();

Ответы [ 4 ]

3 голосов
/ 13 января 2012
    function MyObject(){}

    MyObject.prototype = {

        toString: function(){
            return "myObject";
        },

        myFunction: function(){

        }

    };

var myObject = new MyObject();

alert( myObject );
//myObject
2 голосов
/ 13 января 2012

Только объекты, созданные с помощью функции конструктора, получают имя своего класса, отображаемое с помощью console.log(), как показано в ответе @ Esalijia.

Даже тогда будет отображаться имя класса , а не имя какой-либо переменной, которой вы присвоили объект.

Добавление метода toString() к объекту, однако, изменит выходные данные функции alert(), поскольку она всегда ищет наличие этого метода и использует его, если он существует.

Итак, написание:

var myObj = {
    toString: function() { return "boo"; }
}
alert(myObj)

покажет boo в окне предупреждения вместо [Object object].

2 голосов
/ 13 января 2012
alert(NaN.hasOwnProperty().toString()); // says false. 
alert(typeof NaN); //says it is a number

Итак, я не думаю, что NaN - это объект, а его тип данных - это число.

Для получения дополнительной информации : NaN означает не число.Даже тип данных - это число, а не число.Когда какой-либо математический расчет не может вернуть число, он возвращает NaN.Функция isNaN () определяет, является ли значение недопустимым числом (Not-a-Number). Эта функция возвращает true, если значение равно NaN, и false, если нет.

Например,

var num=35;
var num2=num/'asg';
console.log(num2); //returns NaN
1 голос
/ 13 января 2012

NaN является числовым примитивом, а не объектом. Как и все примитивы, он преобразуется в объект, когда вы используете оператор . для доступа к свойству или методу, который существует в классе prototype.

класса создателя.

Чтобы отобразить свойства, доступные для примитивов, либо преобразуйте их в объект, либо используйте console.dir()

console.dir(NaN);
console.log(Object(NaN));

Все примитивы ведут себя так, когда вы вызываете console.log для любого из следующих действий, они ведут себя одинаково:

console.log("Hello");
console.log(1);
console.log(true);

Тем не менее, вы можете обращаться к свойствам на них, как к обычным объектам:

"Hello".length;
1 .toString();
true.valueOf();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...