Расширение (наследование) переменных. Возможно ли такое?
Есть переменная с параметрами:
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, время: 08:12. |