- SPA_ARTICLE_CODE.zip
- SPA_ARTICLE_CODE
- ChainOfPluginsCompositionSample
- ComplexProductNavigationTest
- CompositionAndNavigationSample
- HierarchicalSPAWithNavigation
- ParameterizedPluginSample
- ParamNavigationTest
- SilverlightPluginSample
- SimpleCompositionSample
- SimpleProductNavigationTest
- SPA_POSTingObjectToServer
- SPAComplexObjectGetter
- SPAServerStringCommunications
- TwoPageOrdinaryHTMLApp
- TwoPageSPA
- TwoPageSPAWithNavigation
- TwoPageSPAWithTabs
- BPF.zip
- BPF
|
// BPF JavaScript library version 0.9
// (c) Nick Polyak 2012 - http://awebpros.com/
// License: Code Project Open License (CPOL) 1.92(http://www.codeproject.com/info/cpol10.aspx)
//
// short overview of copyright rules:
// 1. you can use this framework in any commercial or non-commercial
// product as long as you retain this copyright message
// 2. Do not blame the author(s) of this software if something goes wrong.
//
// Also as a courtesy, please, mention this software in any documentation for the
// products that use it.
/// <reference path="../qunit.js" />
/// <reference path="ArrayExtensions.js" />
"use strict";
var bpf = bpf || {};
bpf.utils = bpf.utils || {};
// since we should not extend object's prototype (see http://erik.eae.net/archives/2005/06/06/22.13.54/)
// we extend the object in a different way - by using objExtend function
// extend the object to have some utility methods,
// especially those that are related to maps/dictionaries
bpf.utils.extendObj = function (obj) {
// creates a shallow copy of an (not array) object
var cloneObj = function (anObj) {
var result = {};
for (var key in anObj) {
result[key] = anObj[key];
}
return result;
};
var cloneUnextendedOnly = function (anObj) {
var result = {};
for (var key in anObj) {
var val = anObj[key];
if (typeof (val) === 'function')
continue;
result[key] = val;
}
return result;
};
var _extendedObj = cloneObj(obj);
_extendedObj.cloneObj = function () {
return cloneObj(_extendedObj);
};
_extendedObj.unextendObj = function () {
return cloneUnextendedOnly(_extendedObj);
}
_extendedObj.removeKey = function (key) {
delete _extendedObj[key];
};
_extendedObj.containsKey = function (key) {
return _extendedObj.hasOwnProperty(key);
};
_extendedObj.printKeys = function () {
for (var key in _extendedObj) {
console.log(key + " ");
}
};
return _extendedObj;
};
//test("testRemoveKeys", function () {
// var myObj = bpf.utils.objExtend({
// key1: "val1",
// key2: "val2"
// });
// equal(myObj.containsKey("key1"), true);
// equal(myObj.containsKey("key3"), false);
// myObj.removeKey("key1");
// equal(myObj.containsKey("key1"), false);
//});
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I am a software architect and a developer with great passion for new engineering solutions and finding and applying design patterns.
I am passionate about learning new ways of building software and sharing my knowledge with others.
I worked with many various languages including C#, Java and C++.
I fell in love with WPF (and later Silverlight) at first sight. After Microsoft killed Silverlight, I was distraught until I found Avalonia - a great multiplatform package for building UI on Windows, Linux, Mac as well as within browsers (using WASM) and for mobile platforms.
I have my Ph.D. from RPI.
here is my linkedin profile