yui.html revision ad5ea88fe7fe14ca1867aa5983c4254863f197ce
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen<script type="text/javascript" src="/build/yui.js"></script>
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen////////////////////////////////////////////////////////////////////////////
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen var Mod = function(Y) {
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen this.Super.apply(this, arguments);
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen Y.log("'B' constructor called: " + Array.prototype.splice.call(arguments, 0));
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen test: function() {
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen Y.log("'B' test called: " + Array.prototype.splice.call(arguments, 0));
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen YUI.add("b", Mod, "3.0.0");
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen////////////////////////////////////////////////////////////////////////////
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen var Mod = function(Y) {
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen // merge the prototype // wonder if this technique would speed inheritance since it // would eliminate lookups in the prototype chain.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen Y.log("'A' constructor called: " + Array.prototype.splice.call(arguments, 0));
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen d: function() { return "foo"; },
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen toString: function() { return [this.a, this.b, this.c, this.d].join(', '); },
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen test: function() {
3e4b0221c4a5f4e815fe2fed6ccef90d8df507f0Adrian Reber Y.log("'A' test called: " + Array.prototype.splice.call(arguments, 0));
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen YUI.add("a", Mod, "3.0.0");
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen////////////////////////////////////////////////////////////////////////////
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen var Mod = function(Y) {
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen this.Super.apply(this, arguments);
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen Y.log("'C' constructor called: " + Array.prototype.splice.call(arguments, 0));
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen YUI.add("c", Mod, "3.0.0");
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reber////////////////////////////////////////////////////////////////////////////
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reber(function() {
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen // YUI.use('b', 'a'); // order matters in stating deps unless add informs about deps
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen var y1 = YUI().use('a', 'c');
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen var b = new .example.B(1, 2);
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen // shouldn't work
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen // var c = new YUI.example.C();
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen // shouldn't work
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen // var b = new y1.example.B();
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen var a1 = new YUI.example.A();
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen a1.b = "a1 change";
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen var a2 = new y1.example.A();
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen a2.c = "a2 change";
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen // add a new version of A, change a prototype function
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen (function() {
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen var Mod = function(Y) {
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen Y.log("'New A' constructor called");
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen // merge the prototype // wonder if this technique would speed inheritance since it // would eliminate lookups in the prototype chain.
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen d: function() { return "bar"; },
9451eeffb0688b801034d963c455c8b31ccbf28cTycho Andersen toString: function() { return [this.a, this.b, this.c, this.d].join(', '); }
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen YUI.add("a", Mod, "3.0.0");
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen var y2 = YUI().use('a');
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen var a3 = new y2.example.A();
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen console.log('Prototype protected? ' + a2.d() + ", " + a3.d() + " - " + (a2.d() != a3.d()));
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen return "changed_d";
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen console.log('Prototype protected? ' + a2.d() + ", " + a3.d() + " - " + (a2.d() != a3.d()));
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen<input id="addButton" type="button" value="Add link" />