2016-03-12 3 views
-1

Для функции я могу сделать это:Может ли метод объекта иметь собственные свойства?

uniqueInteger.counter = 0; 

function uniqueInteger() { 
    return uniqueInteger.counter++; // Increment and return counter property 
} 

Могу ли я сделать это также с помощью метода объекта?

+2

что вы имеете в виду метод объекта? –

+1

Да, вы можете. Объектные методы все еще являются функциями. Почему, что случилось, когда вы попробовали? – nnnnnn

ответ

0

Да, вы можете, потому что functions are first class objects:

В JavaScript, функции являются объектами первого класса, так как они могут иметь свойства и методы так же, как и любой другой объект. Что отличает их от других объектов, так это то, что функции можно вызвать. Короче говоря, это Function объектов.

var object = { 
 
     x: function() { return this.x.value; } 
 
    }; 
 

 
object.x.value = 42; 
 
document.write(object.x());

0

Объекты методы являются функциями. Вы можете сделать это для любой функции:

var a = function() { } 
a.bar = "f"; 

for(property in a) { 
console.log(a[property]); 
} 
// outputs f 

Однако, обратите внимание, что «собственное имущество» имеет особое значение в JavaScript, до того, что настоятельно рекомендуется проверить, если свойство является собственностью объекта при переборе свойства (например, игнорировать унаследованные свойства).

o = new Object(); 
o.prop = 'exists'; 
o.hasOwnProperty('prop');    // returns true 
o.hasOwnProperty('toString');   // returns false 
o.hasOwnProperty('hasOwnProperty'); // returns false 
Смежные вопросы