Io (http://iolanguage.org/) shares the same differential inheritance has NewtonScript:
Polygon := Object clone do( sides := 10 )
Triangle := Polygon clone
Triangle sides println # => 10
Triangle sides := 3
Triangle sides println # => 3
Polygon sides println # => 10Making that simple is not necessarily limited to prototype-based languages. Another (as good as) dead language of Apple's design, Dylan, is class-based, but has a 'each-subclass' modifier that makes a slot magically appear new in each subclass. You would have to design your polygon class for that, though; it is not something that triangle could magically add.
Example: I create an object called Polygon with the intent to use it as a prototype. I assign the variable sides with a value of 10. So, anything with a parent pointer of Polygon gets 10. I then create Triangle from Polygon and assign sides = 3. It doesn't affect Polygon (which has its own variable), but anything that has a parent pointer of Triangles get the 3.