Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #101 (permalink)  
Старый 03.09.2011, 16:42
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

О сейчас в голову пришло, с таким фиксом теоретически возникнет проблема с defineProperty:
(function () {

	function fn() {}

	var obj = {};
	Object.defineProperty(obj, "toString", {value: fn, enumerable: false});

	console.log(Object.keys(obj));//[]
	console.log(obj.hasOwnProperty("toString"));//true
	console.log(obj.propertyIsEnumerable("toString"));//false

}());

кто-то специально выставит enumerable:false, а мы в Object.keys проверим obj.hasOwnProperty("toString") и все равно вернем ключ toString. НО браузеров, одновременно поддерживающих Object.defindeProperty и не поддерживающих Object.keys, и имеющих баг, наверное нет, ну кроме IE8, но в нем Object.defindeProperty работает только для DOM-объектов и при попытке установить для этих свойств enumerable:false возникает ошибка: «Для данного объекта атрибут enumerable дескриптора свойства не может иметь значение false»
Object.defineProperty(Element.prototype, "toString", {
	value: function fn() {},
	enumerable: false
});


Object.keys: 1|2

Последний раз редактировалось Octane, 03.09.2011 в 16:50.
Ответить с цитированием
  #102 (permalink)  
Старый 05.09.2011, 19:04
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

Вроде ерунда, но советую переписать Array_prototype.flatten. Медленно работает.
Ответить с цитированием
  #103 (permalink)  
Старый 06.09.2011, 00:01
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Медленно по сравнению с чем?

Я его из Prototype перетащил, не помню, чтобы использовал
Ответить с цитированием
  #104 (permalink)  
Старый 06.09.2011, 01:16
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

Цитата:
Я его из Prototype перетащил, не помню, чтобы использовал
хотя конечно, да... функция специфическая.
в своем ворке юзаю похожую функцию для разворачивания мультивыборок.
Ответить с цитированием
  #105 (permalink)  
Старый 06.09.2011, 01:40
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Я в своем Array#flatten вместо проверки на массив делал проверку на наличие метода flatten:
'flatten' in Object(value)

так вреде правильней (вдруг флаттиться выравниваться умеют не только массивы), хотя хз.
Ответить с цитированием
  #106 (permalink)  
Старый 16.09.2011, 02:54
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Еще улучшение заметил: в Array#remove к вызову indexOf полезно добавить index вторым аргументом (даже если собственная реализация Array#indexOf не поддерживает второй аргумент, чаще нативная будет использоваться). Так массив не будет каждый раз сначала перебираться.
Ответить с цитированием
  #107 (permalink)  
Старый 03.05.2012, 20:32
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

А чего ты тег экранируешь, а имя класса не экранируешь? Хотя там по-моему вообще экранировать не надо, да и trim в общем-то...

А еще можно добавить проверку, что селектор указан, чтобы не делать таке проверки за пределами функции

Последний раз редактировалось x-yuri, 03.05.2012 в 20:41.
Ответить с цитированием
  #108 (permalink)  
Старый 04.05.2012, 18:37
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от x-yuri
А чего ты тег экранируешь, а имя класса не экранируешь?
Да и вообще строка интересная, чего бы просто не написать tagName !== '*'
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
Ответ



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

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