Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Название вызвавшего свойства (https://javascript.ru/forum/misc/50751-nazvanie-vyzvavshego-svojjstva.html)

kostyanet 09.10.2014 22:41

var frames=[];
for() // где-то же есть данные
// показаны скаляры, но где-то же есть данные
var frame = { // дефолтный прототип
w:1000, // ширина
h:600,
speed:1,9763553,
dir:'top-left',
effect:'sepia',
delay:9000,
...
};
frames.push(frame);
}

Угадал? Нет, ну жаль.

MallSerg 10.10.2014 01:01

не лишнее к прочтению
http://javascript.ru/forum/misc/4895...a-funkcii.html

Safort 10.10.2014 01:54

На самом деле интересная тема. Я тоже как-то пытался ради интереса получить название случайной функции из объекта и даже как-то сделал такое, но потом удалил и забыл :(

nerv_ 10.10.2014 12:09

Цитата:

Сообщение от Safort
На самом деле интересная тема

бессмысленная и беспощадная :) Если чел объект создает так
var o = new Object();

то это говорит о том, что он не знает языка вообще. А также не различает понятия "имя функции" и "имя свойства".

Один из вариантов ответов на вопрос ТС:
var object = {};

object.method = function(prop) {
    alert(prop);
}.bind(object, 'method');

object.method();


Или через замыкание.

Erolast 10.10.2014 13:47

Цитата:

Если чел объект создает так
var o = new Object();

то это говорит о том, что он не знает языка вообще.
А чо не так? Ну, кроме того, что нафиг надо.

Safort 10.10.2014 17:21

Цитата:

Сообщение от nerv_ (Сообщение 334594)
бессмысленная и беспощадная :) Если чел объект создает так
var o = new Object();

то это говорит о том, что он не знает языка вообще. А также не различает понятия "имя функции" и "имя свойства".

Ну почему же сразу бессмысленная?) Мозги поразмять, например)
Мне думается, что new Object это было дано для примера и обозначало какой-то пользовательский объект.




Цитата:

Один из вариантов ответов на вопрос ТС:
var object = {};

object.method = function(prop) {
    alert(prop);
}.bind(object, 'method');

object.method();


Или через замыкание.
Неа)
object.someRandomMethodName();

Выдаёт ошибочку: TypeError: object.someRandomMethodName is not a function

Erolast 10.10.2014 19:16

По теме, есть такой изврат:
var obj = {
  someMethod: function() {
    for (var method_name in this) {
      if (this[method_name] == arguments.callee)
        break;
    }
    
    alert(method_name);
  }
}
obj.someMethod();

Но это, во-первых, не сработает в strict mode, во-вторых, сработает некорректно, если на эту функцию ссылается более одного свойства объекта, в-третьих, сработает некорректно, если функция вызывается в контексте объекта другого. Вообще, такой задачи не должно вставать, с архитектурой явно что-то не так... Но да уже говорили.


Часовой пояс GMT +3, время: 23:40.