We've also seen that strings have properties and methods:
var s = "hello world!"; // A string
var word = s.substring(s.indexOf(" ")+1, s.lenght); // Use string properties
Strings are not objects, though, so why do they have properties? Whenever you try to refer to a property of a string s, JavaScript converts the string value to an object as if by calling [b]new String(s)[/b].This object inherits string methods and is used to resolve the property reference. Once the property has been resolved, the newly created object is discarded.
Numbers and booleans have methods for the same reason that strings do: a temporary object is created using the [b]Number()[/b] or [b]Boolean()[/b] constructor, and the method is resolved using the temporary object.
There are not wrapped objects for the [b]null[/b] and [b]undefined[/b] values: any attempt to access a property of one of these values causes a [b]TypeError[/b].
The temporary objects created when you access a property of a string, number, or boolean are known as [b]wrapped objects[/b], and it may occasionally be necessary to distinguish a string value from a String object or a number or boolean value from a Number or Boolean object.
Note that it is possible (but almost never necessary or useful) to explicitly create wrapper objects, by invoking the [b]String()[/b], [b]Number()[/b], or [b]Boolean()[/b] constructors:
[b] var s = "test", n = 1, b = true; // A string, number, and boolean value.
var S = new String(s); // A String object
var N = new Number(n); // A Number object
var B = new Boolean(b); // A Boolean object[/b]
var s = "hello world!"; // A string
var word = s.substring(s.indexOf(" ")+1, s.lenght); // Use string properties
Strings are not objects, though, so why do they have properties? Whenever you try to refer to a property of a string s, JavaScript converts the string value to an object as if by calling [b]new String(s)[/b].This object inherits string methods and is used to resolve the property reference. Once the property has been resolved, the newly created object is discarded.
Numbers and booleans have methods for the same reason that strings do: a temporary object is created using the [b]Number()[/b] or [b]Boolean()[/b] constructor, and the method is resolved using the temporary object.
There are not wrapped objects for the [b]null[/b] and [b]undefined[/b] values: any attempt to access a property of one of these values causes a [b]TypeError[/b].
The temporary objects created when you access a property of a string, number, or boolean are known as [b]wrapped objects[/b], and it may occasionally be necessary to distinguish a string value from a String object or a number or boolean value from a Number or Boolean object.
Note that it is possible (but almost never necessary or useful) to explicitly create wrapper objects, by invoking the [b]String()[/b], [b]Number()[/b], or [b]Boolean()[/b] constructors:
[b] var s = "test", n = 1, b = true; // A string, number, and boolean value.
var S = new String(s); // A String object
var N = new Number(n); // A Number object
var B = new Boolean(b); // A Boolean object[/b]
本文探讨了JavaScript中字符串、数字及布尔值的属性与方法。解释了如何通过构造器创建临时对象来处理这些基本类型,并解析其背后的实现原理。
1044

被折叠的 条评论
为什么被折叠?



