Расширение (наследование) переменных. Возможно ли такое?
Есть переменная с параметрами:
var settings1 = { mode: "text/html", tabSize: 2, readOnly: true }Есть вторая переменная: var settings2 = { mode: "text/html", tabSize: 2, readOnly: false, lineWrapping: true } Существует ли возможность описать базовую переменную содержащую общие поля, а потом ее расширить? Что-то типа такого: var settings1 = { mode: "text/html", tabSize: 2, readOnly: true }, settings2 = (settings1) { readOnly: false, lineWrapping: true } |
Цитата:
http://javascript.ru/tutorial/object...herez-prototip |
Цитата:
function Def() { this.mode = "text/html" this.tabSize = 2 this.readOnly = true }; function My_Def() { this.readOnly = false this.lineWrapping = true }; var def= new Def(); My_Def.prototype = def; var obj= new My_Def(); for (fld in obj) { alert(fld+'='+obj[fld]) }; |
Цитата:
var settings1 = { mode: "text/html", tabSize: 2, readOnly: true }; var settings2 = Object.create(settings1); settings2.readOnly = false; settings2.ineWrapping = true; alert(settings2.readOnly); // свое, родное alert(settings2.mode); // из прототипа Object.create - из ES5, со всеми вытекающими. Почти в каждом js-фреймворке есть функция extend. Есть она и в jQuery: settings1 = { mode: "text/html", tabSize: 2, readOnly: true }, settings2 = $.extend({ readOnly: false, lineWrapping: true }, settings1); В будущем будет что-то вроде Object.assing - вроде то, что нужно. |
Цитата:
Цитата:
if (!Object.assign) { Object.defineProperty(Object, "assign", { enumerable: false, configurable: true, writable: true, value: function(target, firstSource) { "use strict"; if (target === undefined || target === null) throw new TypeError("Cannot convert first argument to object"); var to = Object(target); var hasPendingException = false; var pendingException; for (var i = 1; i < arguments.length; i++) { var nextSource = arguments[i]; if (nextSource === undefined || nextSource === null) continue; var keysArray = Object.keys(Object(nextSource)); for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) { var nextKey = keysArray[nextIndex]; try { var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); if (desc !== undefined && desc.enumerable) to[nextKey] = nextSource[nextKey]; } catch (e) { if (!hasPendingException) { hasPendingException = true; pendingException = e; } } } if (hasPendingException) throw pendingException; } return to; } }); } https://developer.mozilla.org/en-US/.../Object/assign |
Цитата:
Цитата:
http://yehudakatz.com/2011/08/12/und...in-javascript/ Кстати, по мозиле, там запростяк могут любую шнягу отпостить - походу начальство не проверяет что контрибуторы валят. Так что проверяйте и не пеняйте. Самый прикол был в статье про ту самую urlEncode, на которую шла ссылка с deprecated escape(). В примере как правильно пользоваться urlEncode(или как она там) несколько раз применялась escape() для улучшения результата. Еще скачивал у них полифил addEventListener для дневнего ишака, попробовать - ишак сразу сказал что .Event в if(Object.Event) ундефайнед и дальше не пошел. |
Пно escape - ты про эту чтоли страницу? https://developer.mozilla.org/ru/doc...PI/DOM/Storage
Дык ты смотри на автора: akhabibullina (Khakrov, Ukraine) Шучу ) Авторов оригинала - целый рой. |
Вот эту https://developer.mozilla.org/en-US/...Objects/escape
Блин, ну я вообще память теряю - encodeURI называется, а не urlEncode (это в php такая) Ну вот, а потом идем куда послали https://developer.mozilla.org/en-US/...deURIComponent и там видим в колбэках ту самую ничтожную escape Еще с fileReader'ом они меня нае..ли. Ладно, не важно. |
Цитата:
|
Цитата:
Цитата:
По сути же, мало ли что там говорят про escape. На деле никто не выпилил и врядли когда-либо выпилит эту функцию. Ща открыл в хроме document.all - и оно все еще есть, хоть и typeof выдает undefined |
Часовой пояс GMT +3, время: 20:05. |