Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Function Cache (https://javascript.ru/forum/misc/52176-function-cache.html)

krutoy 07.12.2014 15:48

Цитата:

Сообщение от nerv_
Если очень хочется пихать объекты с циклическими ссылками, то массивы.

С какими чиклическими ссылками? Я выше показал, что с объектами ф-ция вообще работает некорректно, с любыми объектами. А учитывая то, что в js все есть объект, ф-ция не работает в общем случае. Не понимаю, откуда в треде столько поросячего восторга. Ставлю палец вниз:)

nerv_ 07.12.2014 16:15

krutoy, я рад, что ты открыл для себя функцию Object.create(). Жаль, что только ее :)

Цитата:

Сообщение от krutoy
Я выше показал, что с объектами ф-ция вообще работает некорректно

а я показал, куда тебе идти :D Шутка) Не показывал еще, но если будешь настаивать, то покажу)))

иди почитай что такое JSON

krutoy 07.12.2014 16:24

nerv_,
Я ничего не понял. Что не так в моем коде? JSON.stringify берет только верхнюю (ближний хеш) часть объекта, которая объектом, безусловно не является. И ты так и не ответил, причем тут циклические ссылки.

А Object.create тут не при чем, он взят в качестве примера. с юбым прототипом и их цепочкой, будет то же самое.

bes 07.12.2014 16:34

Цитата:

Сообщение от nerv_
стандартный прием)

ну мы-то люди простые, институтов не кончали :D
идём от очевидного, где-то надо хранить - в переменной, массиве, объекте, до ключа объекта не догадались :no:

krutoy 07.12.2014 16:38

Цитата:

Сообщение от bes
до ключа объекта не догадались

Ключ объекта в этом смысле является эквивалентом переменной. Все переменные в JS фактически также являются св-ми объекта, на считая некоторых деталей. Поэтому, мне тоже не понятно, чему ты удивляешься. Есть всего лишь строка, которая сслыается на объект.

bes 07.12.2014 16:41

Цитата:

Сообщение от krutoy
Ключ объекта в этом смысле является эквивалентом переменной. Все переменные в JS фактически также являются св-ми объекта, на считая некоторых деталей. Поэтому, мне тоже не понятно, чему ты удивляешься. Есть всего лишь строка, которая сслыается на объект.

ладно, будем считать, что тогда уже поздно было, мозг плохо работал :yes:

krutoy 07.12.2014 16:42

bes,
Это идет, видимо, от общего, превратного понимания JS, в массе. JS является чистейшим ООП языком, в стиле смолтока или селфа, то есть, ООП в хорошем смысле этого слова. В подобных семантиках, надо рассматривать ключ объекта, как предикат, определяющий, может ли объект принять данное сообщение, "знает" ли он данное определение.

krutoy 07.12.2014 16:45

bes,
Но, в целом, ф-ция -- говно, см мои комменты выше. Ее написал не "гений", как ты выразился, а, мягко говоря, чел далекий от понимания JS.

bes 07.12.2014 16:54

Цитата:

Сообщение от krutoy
bes,
Но, в целом, ф-ция -- говно, см мои комменты выше. Ее написал не "гений", как ты выразился, а, мягко говоря, чел далекий от понимания JS.

Цитата:

Сообщение от krutoy
JSON.stringify

так лучше?
Array.prototype.slice.call(arguments).toString()

krutoy 07.12.2014 17:04

Цитата:

Сообщение от bes
так лучше?

не думаю
f=function(arg){
    return [].slice.call(arguments).toString()
}

o1=Object.create({a: 1})
o2=Object.create({a: 2})

alert(f(o1))
alert(f(o2))
//  [object Object]
//  [object Object]

что мы будем сравнивать?
А если так
f=function(arg){
    return [].slice.call(arguments[0]).toString()
}

o1=Object.create({a: 1})
o2=Object.create({a: 2})

alert(f(o1))
alert(f(o2))

вернем 2 пустые строки, в даном случае, то есть, те же яйца сбоку.


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