Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.10.2016, 22:40
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Как сделать обёртку для функции?
Как сделать, чтобы вот так работало:
local_storage['name'] = 'sdfsf'
var s = local_storage['name']


Так явно не будет работать...
function local_storage(name)
{
	return localStorage[name]
}


Т.е. засунуть localStorage в функцию, оставив для неё такой же синтаксис...
Ответить с цитированием
  #2 (permalink)  
Старый 20.10.2016, 23:15
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

https://learn.javascript.ru/decorators

Нихрена не понятно...

Так?
function local_storage(name)
{
	return function()
	{
		return localStorage.apply(name)
	}
}
Ответить с цитированием
  #3 (permalink)  
Старый 20.10.2016, 23:28
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,518

local_storage = localStorage; // =)


Если же говорить вообще, те: "Как сделать из функции объект с динамическими свойствами?", то ответ - никак. Объект - это объект, функция - это функция.

..но если очень хочется, то можно через Proxy(не в IE).
__________________
29375, 35

Последний раз редактировалось Aetae, 20.10.2016 в 23:38.
Ответить с цитированием
  #4 (permalink)  
Старый 20.10.2016, 23:44
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Если так сделать:
local_storage = localStorage

То как к массиву нельзя обращаться?

А как функцию сделать?

Просто хотел попобовать сделать 1 файл, подключать его везде, где нужно сохранить/получить.
Может так долбаный хром будет считать хранилище для этого файла.

Последний раз редактировалось Артист, 20.10.2016 в 23:51.
Ответить с цитированием
  #5 (permalink)  
Старый 21.10.2016, 00:00
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Цитата:
..но если очень хочется, то можно через Proxy(не в IE).
Цитата:
Может так долбаный хром будет считать хранилище для этого файла.
const local_storage = new Proxy(localStorage, {
  get: (target, prop) => JSON.parse(target.getItem(prop)),
  set (target, prop, value) {
    target.setItem(prop, JSON.stringify(value))
  }
})

local_storage['name'] = 'sdfsf'
alert(local_storage['name'])

Последний раз редактировалось Lemme, 21.10.2016 в 00:04.
Ответить с цитированием
  #6 (permalink)  
Старый 21.10.2016, 00:04
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Пишет:

Цитата:
error: Unexpected token {
Ответить с цитированием
  #7 (permalink)  
Старый 21.10.2016, 00:16
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Артист, так как писал тут, то допустил ошибку, сейчас все должно работать.
Ответить с цитированием
  #8 (permalink)  
Старый 21.10.2016, 00:20
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Спасибо )

Я погуглил пока что, так тоже работает:

const local_storage = new Proxy
(
	localStorage,
	{
		get(target, prop)
        {
        	return target.getItem(prop)
        },
		set(target, prop, value)
		{
			target.setItem(prop, value)
            return true
		}
	}
)

local_storage['name'] = 'sdtyuf'
alert(local_storage['name'])
Ответить с цитированием
  #9 (permalink)  
Старый 21.10.2016, 00:22
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Цитата:
Я погуглил пока что, так тоже работает:
Артист, почему бы и нет. ведь тут написано ровно тоже самое, если убрать бесполезный return true и добавить JSON.stringify/parse

Последний раз редактировалось Lemme, 21.10.2016 в 00:26.
Ответить с цитированием
  #10 (permalink)  
Старый 21.10.2016, 00:43
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,518

Но зачем? К локалсотраджу можно и так обращаться как к объекту, бай дезижн блин. =\
А прокси не работает в IE. Ни в каком IE.

Сообщение от Артист Посмотреть сообщение
Может так долбаный хром будет считать хранилище для этого файла.
Локалсторадж привязан только и исключительно к текущему домену.
__________________
29375, 35

Последний раз редактировалось Aetae, 21.10.2016 в 00:47.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать ссылки из файла CSS корректными для всех директрорий сайта? GrEb (X)HTML/CSS 7 28.01.2020 12:56
Как сделать скрипт для ввода пароля? GooD&BaD Общие вопросы Javascript 36 04.02.2013 13:09
Удалению метаданных в JPEG lorents Библиотеки/Тулкиты/Фреймворки 2 22.04.2012 21:02
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55
Как сделать функцию типа toDataUrl для рисунка в ie6 ? Олег Общие вопросы Javascript 2 14.09.2008 00:06