Google
 
Webnews.only-4-geeks.com
Interesting places
news.only-4-geeks.com Forum Index » JavaScript

Google Chrome "differences"

 
Jump to:  
 
Gregor Kofler
PostPosted: Wed Sep 03, 2008 7:10 pm    Post subject: Google Chrome "differences"
       
I've augmented string objects (not the prototype) and none of the
popular browsers ever complained. Until Chrome came along. Chrome won't
accept something like

String.prototype.foo = function() {
if (!this.bar) {
this.bar = [];
}
// this.bar stays always undefined
}

Trying a workaround I came across

String.prototype.bar = [];

String.prototype.foo = function() {
this.bar.push({
o: this,
p: "baz"
});
return this;
}

var x = "foo";
var y = "foo";

x.foo();
y.foo();

alert("".bar[0].o === "".bar[1].o);

yields false in "all" browsers. Chrome returns true.

Any comments on that?

Gregor



--
LINK ::: Landschafts- und Reisefotografie
LINK ::: meine JS-Spielwiese
LINK ::: Bildagentur für den alpinen Raum
 

 
Lasse Reichstein Nielsen
PostPosted: Thu Sep 04, 2008 2:48 pm    Post subject: Re: Google Chrome "differences"
       
Gregor Kofler <usenet@gregorkofler.at> writes:

Quote:
I've augmented string objects (not the prototype) and none of the
popular browsers ever complained. Until Chrome came along. Chrome
won't accept something like

String.prototype.foo = function() {
if (!this.bar) {
this.bar = [];
}
// this.bar stays always undefined
}
.... and ...


Quote:
yields false in "all" browsers. Chrome returns true.

Any comments on that?

Well spotted.
It's not standard-compliant.

It's a lousy standard at that point - requireing the creation of a new
object every time you access a property of a basic string value
.... like the *length*! - but still, it is the spec.

/L
--
Lasse Reichstein Nielsen
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
 

 
Lasse Reichstein Nielsen
PostPosted: Thu Sep 04, 2008 3:11 pm    Post subject: Re: Google Chrome "differences"
       
Gregor Kofler <usenet@gregorkofler.at> writes:

Quote:
I've augmented string objects (not the prototype) and none of the
popular browsers ever complained. Until Chrome came along. Chrome
won't accept something like

String.prototype.foo = function() {
if (!this.bar) {
this.bar = [];
}
// this.bar stays always undefined

A little testing shows the core problem:
---
String.prototype.foo = function() {
return typeof this;
}
alert("x".foo()); // alerts "string"
---

I.e., some optimization that prevents creating new objects, that
probably works well for built-in functions, is also applied to
user-added methods on String.prototype.
Same problem exists for Number and Boolean.

/L
--
Lasse Reichstein Nielsen
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
 

Page 1 of 1 .:.

Google
 
Webnews.only-4-geeks.com

Windows Update | C++ | C | PHP | JavaScript | Photoshop | Programming | Windows 2000 | Python | Windows XP | Object | Flash | Flash - ActionScript | Paint Shop Pro | Excel | PowerPoint | Access | Word | Windows 98 | Internet Explorer 6.0 | CorelDraw12 | Java | XML | asm x86 | Linux Mandrake | Linux RedHat | Outlook |  | news from newsgroups |_ | s

Web Templates

Awesome Website Templates ©

Swinoujscie ubezpieczenie ac wózki widłowe baseny krzesła